Documentation

mergeModules : generate a full Haskell src file, give a .hs config
file, and a stub to take default syntax and decls from. Mostly we
just ensure they don't do anything bad, and that the names are
correct for the module.

Transformations:

. Take src location pragmas from the conf file (1st file)
. Use the template's (2nd argument) module name
. Only use export list from template (2nd arg)
. Merge top-level decls
. need to force the type of the plugin to match the stub,
overwriting any type they supply.