Notification callback support

Upgraded all notification plugins to call a callback function after they finish notifying.

- If there was an error when notifying, the first argument to the callback will be the error that occurred
- If the notification succeeded, the first argument will be `null` and the second argument will be an object with at least an `id` and `url` property, or `null` for email or chat notification plugins