Add Apply

We should support this, and also clean up the hierarchy a bit. Since currently chain doesn't have to be a functor, but we all know it is.

Please give it a once over, might have messed up some of the conversion.