Made some changes to the 'MonadLift' interfaces.

With GHC HEAD (which supports overlapping type families), it's now possible for the 'MonadLiftControl' interface to mirror the 'MonadTransControl' interface, including the explicit state and everything. Older versions of GHC will still work, but use the old interface. They're largely compatible.

A few other bugs were fixed (even for older versions) in the process of adding this support. Prior to now, trying to 'lift'' a value of type `StateT Int IO a` to `StateT Int IO a` would fail because of ambiguous overlap. A new set if 'MonadLift*' instances (from (t m) to (t m)) have been added that resolve this ambiguity and provide the correct behaviour.