[Fixes #1830] collectObjects now schedules `loading` and `setupContexts` to run after recursion finishes.

Rendering a `loadingView` template fails. Since the initial invocation
of the recursive `collectObjects` function must return before
attempting to render any view, the attempt to invoke the `loading`
route's `setup` function would throw an exception. This patch addresses
the issue by scheduling the `loading` function to be invoked after the
rest of the runloop queue has drained. It also schedules a call to
`setupContexts` since this would normally be invoked at the end of the
recursive decent and ensures the `application` template's `outlet` is
properly replaces.