Exposing lower level API using GhcMonad

For issue kazu-yamamoto/ghc-mod#138

Creates GhcModLowLevel to export low level functions for using the GHC interface parts only.

Converts some routines to be in GhcMonad rather than Ghc, to allow these routines to be used in more complicated Monad stacks