`track()` passes lists as strings, rather than arrays

Two of the ways to fix this:

1) Convert the `track()` arguments into arbitrary json and send this to server
2) Support ruby's querystring array syntax (i.e. `{'one':['two','three']}` becomes `one[]=two&one[]=three`

This pull request opts for (2), and it only works when the argument is either an explicit array or list.

We're actually working around this in production and don't need this fix, so it's not tested beyond our dev environment, and you might wan to hold off on merging.