Allow a template explicitly set on a view to be used when rendering a route.
add test for user provided template on a view
Simplify the mechanism for warning that ember-states was removed
Sync router.js, closes #3242
fix SimpleHandlebarsView destroy
Merge branch 'route-view-template' of https://github.com/mmpestorich/ember.js into mmpestorich-route-view-template

Conflicts:
	packages/ember-routing/lib/system/route.js
provide hook for persistence libraries to injection custom find
behavior.
Ember.reduceComputed tolerates initially null values.

Fix #3255.
Merge pull request #3282 from stefanpenner/custom_store_hook

provide hook for persistence libraries to injection custom find/create behavior.
fix typo (thanks @trek)
Ember.reduceComputed remove in reverse order.

This makes simple implementations of things like `filter` easier to reason
about.

Fix #3272.
Merge pull request #3284 from hjdivad/array-computed-bug-fixes

Fix a couple of arrayComputed bugs.
length is manually notified of changes and already
stashed in _childViews.length
restructure controller init, to minimize property lookups
Merge pull request #3283 from stefanpenner/optimize_controller_init

Optimize controller init
Adds the ability to specify viewClass for render

Right now templateName, controller, outlet and into can be passed to
the render helper.
This adds the ability to pass viewClass also while rendering a
template.
This will be useful in implementing modal views.
One fine example for modal views is @ahawkins
[implementation](http://jsbin.com/elenaz/1/edit).
But here the problem is when you have more no.of modals, then you have
to define a dummy view which has no specific logic, just extending the
Modal view for the sake of templatename alone, as in this
[example](http://jsbin.com/oPIMALo/2/edit).

Before this change,
   ```javascript
   App.ApplicationRoute = Ember.Route.extend({
    actions: {
      open: function(name) {
        this.render(name, { into: 'application', outlet: 'modal' });
      },
      open1: function() {
        this.send('open','modal1');
      },
      open2: function() {
        this.send('open','modal2');
      },
      open3: function() {
        this.send('open','modal3');
      },

      close: function() {
        this.render('nothing', { into: 'application', outlet: 'modal'
});
      },

      save: function() {
        alert('actions work like normal!');
      }
  }
});

   App.Modal1View = App.ModalView.extend({});
   App.Modal2View = App.ModalView.extend({});
   App.Modal3View = App.ModalView.extend({});

```

  After this change
  ```javascript
       App.ApplicationRoute = Ember.Route.extend({
        actions: {
          open: function(name) {
            this.render(name, { into: 'application', outlet: 'modal',
viewClass:'modal' });
          },
          open1: function() {
            this.send('open','modal1');
          },
          open2: function() {
            this.send('open','modal2');
          },
          open3: function() {
            this.send('open','modal3');
          },

          close: function() {
            this.render('nothing', { into: 'application', outlet:
'modal' });
          },

          save: function() {
            alert('actions work like normal!');
          }
        }
        });

        ```
No need to create those dummy views
Rename viewClass to view and simplify the implementation
Merge branch 'pr/3281'
Add API docs for Ember.reduceComputed and Ember.arrayComputed