BREAKING: Move setting controller's `model` into setupController

Also, introduced a lookupController hook, which can be used to specify
the controller used for a route.

This commit reverse an earlier change (43354a98). After living with
this in multiple applications, we found that it was problematic that
the `model` property is set in a place that is not easy to override.
One side effect is that when not intended, this property change can
result in observers firing at unintended times.

In addition, this change makes `setupController` consistent with
`model` and `renderTemplate` in that it has a sane default behavior
that is usually what you want but can be overridden.

Thanks to @tchak for prompting this thinking in #2044

Kris Selden / Luke Melia