introduced covariant return types, replaced some classes by interfaces, added TreeMonad, commented out KleisliArrow (which lead to compiler error)

git-svn-id: http://highj.googlecode.com/svn@178 bdcd8b68-9dcc-aa74-f1b9-b4da3e61a8cc