My previous implementation was slightly flawed

I wasn't thinking far enough ahead with ignoring of URLs. Ignoring wasn't the correct way to go, but handling was. The slight difference is that now there are ways to take control of the deferred object during the processing of an ignored URL. An example would be incorrect login credentials triggering the auth-loginRequired event, this would be incorrect instead the application can take control of this process and potentially broadcast a different event like authorization failed. I've also migrated the code to run within a 'use strict' closure and JSLinted.

I've also enabled chaining of the addUrlHandler method.