feat(deferred-notifications): Deferred notification can be cleared

Allow creation and clearing of deferred notification. Deferred notification will be triggered in a timeout of 0 (after current thread ends). This allows the controller to call `notification.clearQueue()` to empty the queue of deferred notification. `notification.flushQueue()` would display all the deferred notifications.

**Non breaking changes**

ie., to defer the notifications in the `$httpProvider` middleware, allowing the controller to cancel them:

```coffeescript
notification.error error.message, {deferred: true} for error in errors
```

in the controller
```coffeescript
notification.clearQueue()
notification.error "Ad #{ad.title} could not be updated"
```