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. 

The problem is you didn't create a feature branch. :P

Something like this should do the trick:

```console
$ git checkout -b tmp
$ git checkout master
$ git reset --hard 50490bb3dfcc0025f4c5d7690f296b094decd87b  # reset to common ancestor
$ git pull upstream master  # replace "upstream" with your alias for ramda/ramda
$ # apply this change
$ git add test/test.functionBasics.js
$ git commit
$ git push upstream master
$ git checkout tmp
$ git rebase master
$ git checkout master
$ git pull . tmp
$ git branch -d tmp
$ git push origin master --force  # ensure you're pushing to *your* repository, not ramda/ramda!
```

In future, always work on feature branches so the master branch can act as a conduit for upstream changes. :)