This PR adds a new formalisms at the Resource layer. First all inputs to a Resource are typed as ```Input<T>```. This is either a T, ```Promise<T>``