Upate package API and structure

- Create inteface `Listener` to handle listeners
- Create method to stop event propagation
- Improve PHPUnit tests
- Move dispatch responsibility to `Manager`
- Use `ListenerCallback` to handle callables
- Use `ListenerCollection` to store listeners
- Use and array as argument to dispatch events