Adds initial TH derivation of injection functions

- Adds support for deriving injection functions for instruction-set-like
  GADTs with TemplateHaskell.