Switch to using Proxy# from ghc-prim

One less thing to define, and possibly cheaper.
Change order of arguments for _lower

This way lower is just a partial application of _lower.
Cnange MonadTower to a Constraint alias

No real need to have a fake class as it's never partially applied.
Add an implementation of liftIO
Put more constraints in the aliases
Implement start of a State solution