Type mappings among GL and Haskell types.

These mappings now live in their own module as there is a fair bit of
annoyingly boring code involved.