Batman.Params: Updating URL params without reloading

For #1044 I was looking to change URL params without 'reloading' the page client-side. This way you can query for collections and update URL without any overhead. This enables hard refreshes and remembering your query/filter params.

This feature consists of `Batman.Params` and `Batman.UrlParams`.

__Batman.Params__
This replaces `Batman.currentApp.get('currentParams')` which was a `Batman.Hash`. It has `url` as an accessor which reflects an instantiated `Batman.UrlParams`.

__Batman.UrlParams__
```coffeescript
window.location.search # offset=0&limit=20
Batman.currentApp.get('currentParams.url').toJSON() # { offset: 0, limit: 20 }

# immediately updates the URL and the params set in Batman.Params
Batman.currentApp.get('currentParams.url').update(offset: 20)

window.location.search # offset=20&limit=20
Batman.currentApp.get('currentParams.url').toJSON() # { offset: 20, limit: 20 }
```

`Batman.UrlParams` directly reflects parameters set in the URL. Any update in the params will be immediately set in the application URL but will not reload anything. It's important to know that any updates in `Batman.UrlParams` will propagate to `Batman.Params` but not the other way around.

__Controller example__
```coffeescript
index: ->
  @paginator = new Paginator
  @paginator.observe 'change', (params) =>
    @get('currentParams.url').update(params)
```
I've though about `params` in the controller to also reflect the current params but I've decided against this because I think it should reflect the original request params.

What do you guys think?

PS: I'm having a bit of trouble running the entire test suite. So I'm dependent on Travis to build it.