Use constraints instead of monad transformer stack

Also update to the next version of hactor.
Clean up code for improved readability.

Replace use of the state monad's 'modify' and 'gets' functions with lenses.

Also rework the IRC system.
Monads monads monads monads monads.