Initial Monad implementation
Removed second generic parameter to Monad class
Implemented most of the common monad functions, not yet tested