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. 

n.b. `map` must be fully qualified to support "list of Functors => Functor of list". If we use `_map` here, only "list => list" commutation works.