WIP - Add event dispatcher

Alternative to #40

This is a Work in progress. I want to validate before going farther.

TODO: 
- [x] Create a BernardEvents class for event names
- [x] Dispatch event `PRODUCE` before enqueuing a message in the `Producer`
- [x] Dispatch event `CONSUME` after dequeuing a message in the `Consumer`
- [x] Dispatch event `EXCEPTION` for errors in the `Consumer`
- [ ] Write unit tests
- [ ] Doc