Fix data API...

- RouteController data function is read only but is available to controller
  functions at any time (e.g. from hooks)
- Set the global data context at the end of the run so that new templates have a
  chance to render before the data context changes which could cause the old
  templates to re-render one last time before the change.
Clean up data API...

- Make read only
- Calling data() from controller always returns the controller's data, not the
  global data
- Move global data setting back to right after waitOn. The issue identified by
  Tom ended up being related to UI.With and UI.emboxValue.