Initial commit, completed up to the end of Monad.hs