Implement AFunctor class and hoist.
Rename AFunctor to Funct, and hoist to <<$>>.
Generalize Dist to allow Traversable-like operations.