Remove TemplateHaskell extension from the TH modules

By implementing these modules without using the template
haskell extension we are able to support stage 1 cross
compilers where the template haskell extension is not
available. At this point the lens library only provides
template haskell functionality and does not use it itself.