Add full support for declaration splices.

Since declaration splices are now untyped, they can be used anywhere a
declaration is valid, including in declaration brackets.
Code formatting cleanup.
Allow splices to add additional top-level declarations.
Change the types of typed brackets and splices.

The essence of this change is that a TExp a now wraps a TH.Exp instead of a
TH.ExpQ. This means:

 * A typed bracket [||...||] now has type Q (TExp tau), where tau is the type of
   the expression in the bracket.

 * A typed splice $(...)  must contain a value of type Q (TExp tau), and has
   type tau.

Previously, typed brackets had type TExp tau, and typed splices had to contain a
value of type TExp tau.
Add support for Template Haskell module finalizers.

Template Haskell module finalizers are run after a module is type checked.
Add support for Template Haskell state.
fixup 0e308ffd403e7