Ember.Route refactor

This PR includes a number of tweaks and breaking changes to Ember.Route:

* BREAKING: `setupControllers()` has been renamed `setupController()`. This method should be used to set up the route's default controller, not additional controllers used to render templates (which could be done in `renderTemplate()`). Therefore, there was no reason for the plural/singular mismatch between the method name and its arguments.

* BREAKING: `renderTemplates()` has been renamed `renderTemplate()` to match the default scenario of rendering a single template. The arguments (`controller, model`) now match those of `setupController()`. Docs were also added.

* `Ember.generateController()` has been extracted from `Ember.controllerFor()`, so that `generateController()` can be called independently.

* `Ember.Route.lookupController()` has been merged with `Ember.Route.controllerFor()`, which should be used for controller lookups.

This PR originally contained a method to override `controller` dynamically for a `Route`. However, after discussion with @wycats, we decided it would be best to encourage custom controllers to be registered. For example, if you want to use the `EditController` for your `PostRoute`, you should register it with your application:

```
App.register('controller:post', App.EditController)
```