The Return() for the Error<T> monad now checks if the delegate has multiple items in its InvocationList, if so it Mconcats the result of each invocation.  This allows Error<T> delegates to be mappended with the + operator.  Very cunning, will need to check for performance issues.

Added a Return() method to the IO<T> to do the same.  It is optional, so at least if there are any performance implications then the IO invokers can opt out and Mconcat/Mappend manually.

Also added IO.Mempty<T>() and Error.Mempty<T>()