Conveience objects to treat monad-series ops as first class values.

This makes it much cleaner to pass e.g. functor<A>::map as first
parameter of functor<B>::map. In general, should clean up some higher
order function use.
Minor optimisation of concatMap, and more pervasive support of rvalues.

Splicing each sub-list during the flattening step should be much more
efficient than inserting them element-wise.
General improvements on eitherT, incl. pervasive rvalue support.

Also changed some lambdas to the new convenience function objects
'aPure', 'fMap', etc for cleaner implementations.