extracted Ember.generateController() from Ember.controllerFor()
BREAKING: renamed Ember.Route.setupControllers() to setupController()

This method should be used to set up the route's default controller, not additional controllers used to render templates (which should be done in renderTemplates()). Therefore, there was no reason for the plural/singular mismatch.
removed Ember.Route.lookupController() and merged all controller lookup logic into Ember.Route.controllerFor()
BREAKING: renamed Ember.Route.renderTemplates() to renderTemplate()

The arguments were also changed to include `controller`, and now match the args for `setupController()`. Docs were added.
properly deprecated Ember.Route.setupControllers() and Ember.Route.renderTemplates()
Merge pull request #1693 from dgeb/refactor-route-setup

Ember.Route refactor
Add sub-containers
Add currentPath to applicationController
Update gitignore.
Remove pointless check for native Array replace.

The real function is called splice, which is what the “shim” was calling anyway.
Promote isSingleton to Em.Container api.

This lets one `container.isSingleton("controller:WhateverController")`.
Application registers implicitly resolved controllers.

Also, such controllers can be registered as non-singletons.
ArrayController learned itemControllerClass.

```javascript
App.ItemController =
  Em.ObjectController.extend();

var arrayController = Em.ArrayController.create({
  itemControllerClass: 'ItemController',
  content: Em.A([0, 1])
});

controller.objectAtContent(0);               // an instance of ItemController
controller.objectAtContent(0).get('content') // 0
```

This partially addresses #1637, but makes no attempt at supporting reusable
views.