Query parameter support for Controller routes.

This change enables routes to consume query (aka search string)
parameters in routes. Query parameters are always optional, and
a hash of the parameters is always passed as the last argument to
route handlers (even when there are no query parameters in location
bar).

Allowed query parameters can be defined in the `defineRoutes`
method of a `Controller`. Example:

```javascript
// ...
defineRoutes: function () {
  // All routes will consume a `foo` parameter
  this.query('foo');
  this.show('bar', 'showBar', function () {
    // Only routes that match in the `bar` namespace consume a `baz` parameter
    this.query('baz');
  });
},
// ...
```

In the example above, if the following location is visited on the page:

`/bar/1?foo=1&baz=2&unrecognized=3`

The `showBar` route will be called with the following `arguments`:

```javascript
[1, { foo: 1, baz: 2 }]
```
It might, but structuring it this way would mean that we are depending on incidental implementation details of `Backbone.history.getFragment`. There is no guarantee that a change won't break it later. An example detail that would cause it to break:

```javascript
// In Backbone.js:
Backbone.history = {
  // ...
  someHistoryMethod: function () { /* ... */ },
  // ...
  getFragment: function () {
    // ...
    this.someHistoryMethod();
    // ...
  }
  // ...
}
```

If, today or in the future, the implementation of `getFragment` includes an implementation detail like this, our reference to `getFragment` will stop working.