Add the ability to derive instances of Functor, Foldable, Traversable
This patch is a straightforward extension of the 'deriving' mechanism. The ability to derive classes Functor, Foldable, Traverable is controlled by a single flag -XDeriveFunctor. (Maybe that's a poor name.) Still to come: documentation Thanks to twanvl for developing the patch