Use template Haskell to generate Uniplate-like functions.

WWW: http://hackage.haskell.org/package/geniplate
