Type Providers with code generator, customised name mapping and type mapping

This PR contains code generation in addition to the features introduces in #130.