Add TExp data type.
Add a method to the Quasi type class that adds new top-level declarations.
Make a TExp a wrap a TH.Exp instead of a TH.ExpQ.

We also provide two new helper functions:

  unTypeQ :: Q (TExp a) -> Q Exp

  unsafeTExpCoerce :: Q Exp -> Q (TExp a)
Add the TExpQ type alias.
Correctly pretty-print let and do expressions.
Add support for top-level finalizers
Add Template Haskell state.

The Quasi monad can now carry state, and this state can be shared amongst
quasiquoters/splices/etc. State is stored in a finite map of Dynamic values and
is indexed by TypeReps.