Sketching a better subscription and waitOn API...

Design thoughts welcome
cc @tmeasday, @Multiply, @Lepozepo
Issue #208

How it Works:
- You can call the `subscribe` method on a RouteController instance, which means
  you can call this.subscribe from a before hook.

- The return value of this.subscribe adds a wait() method that simply adds the
  subscription handle to a list of handles the user intends to wait on.

- Before hooks can now call this.wait(onReady, onWait). Notice we didn't pass a
  list as the first parameter. The default list is the RouteController's wait
  list. Multiple before hooks can call this method.

- You can still call this.wait with a list if you want to pass custom handles (a
  handle is just an object that has a ready() function).

- waitOn still works but all waitOn functions are called at RouteController
  constructor time and added to the waitList to be used when the controller is
  run. This helps ensure the subscriptions aren't called multiple times.