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

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 changing can
result in observers firing at unintended times.

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

Thanks to @tchak for prompting this thinking in #2044.

This PR also adds a guard for when the model hook returns undefined,
as is the default behavior for a non-dynamic route. In this case,
the controller's model property is no longer set. This change will
help avoid routes unexpectedly squashing computed controller content.

Kris Selden / Luke Melia
Merge pull request #2703 from lukemelia/setup-controller-update

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