commute and commuteMap

Been thinking this over for a while (see #441). The utility of `commute` in Array-of-Array scenarios is not obvious--but `commute` shines in situations where you want to convert a list of Functors (Maybe, Either, even Promise?, etc.) to a Functor of a list. 

Parens appear to be unbalanced..

Currently:
((a -> (b -> c)) -> (x -> [x])

Should be
(a -> (b -> c)) -> (x -> [x])

?