Stringifies an Object, accommodating nested objects
(forming the conventional key 'parent[child]=value')
function(data) {
    return qs.stringify(data, {serializeDate: function (d) { return Math.floor(d.getTime() / 1000); }})
      // Don't use strict form encoding by changing the square bracket control
      // characters back to their literals. This is fine by the server, and
      // makes these parameter strings easier to read.
      .replace(/%5B/g, '[').replace(/%5D/g, ']');
  }