Integrate lifted-based into the MonadControl framework

This patch lets us use exceptions as the interface, and monad-control to do the heavy lifting.

Pinging @snoyberg