Deferred before support

Returning a `$.Deferred` object from the `before` callback will respect the deferred object's promise when it comes to calling the main route & after callbacks.