[FEATURE query-params-new] Model dep state and bugfixes

Such model dependent state.

Query params values are stored in an application cache
using cache keys calculated from Route#serialize params.
At some point this concept will be generalized, but
for now, only query params have model dependent state.

The caching behavior can be configured via a
`cachedProperties` hash on the controller:

    Controller = Ember.Controller.extend({
      queryParams: ['foo'],
      foo: 123,
      cachedProperties: {
        foo: 'controller'
      }
    });

By default, a property's cachedProperties setting is 'model',
as in model-dependent state. The code above uses the only other
option presently available, which is to cache the property scoped
only to the controller, and not to the model currently loaded into
the controller. Practically speaking, this means that query param
values will will be preserved even when switching the model loaded
into a route/controller.