Add cartesian product for monads

- cannot be done in ghci, this short unworthy needs proper type declaration
Make Chain (actually Writer) an applicative functor instance