Use 'GhcMonad' in GHC and split up checkModule into phases.