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'
Implemented Ember.ajax

and Ember.sendJSON

Identation

Removed evented stuff

Always use RSVP.Promise

Line wraps

Json striginify