Move types/functions into Module subobject.

* Move types: e.g. Module.foo -> Module.types.foo
* Move functions: e.g. Module.bar -> Module.functions.bar
* Rename pointer types to foo$. This is so it can be a JS identifier.
* Rename TypeList -> TypeBuilder
* Rename FunctionList -> FunctionBuilder
Refactor out canCoerceArgument
Cleaning up handles (JS + C++)