Better discard functionality

* `maxAttempts` option for Reader is now `0` by default. The default means that the feature is turned off.
* If there is no `DISCARD` handler and `maxAttempts` is `> 0` then the message will be sent to the `MESSAGE` listener.
* `message.finish()` will always be called when `maxAttempts` has been exceeded.
* Updated the README to reflect new behavior.

TODO:
- [ ] Changelog
- [ ] Ensure multiple calls to `finish` isn't problematic.