Add proper GADTs support to Template Haskell