[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
`scope` property in the QP config hash.

    Controller = Ember.Controller.extend({
      queryParams: ['page', 
        { foo: { scope: 'controller' } }
      ],
      page: 1,
      foo: 123
    });

By default, a property's scope setting is 'model', as in
model-scoped 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.

Closes #4493