Implement DataListener interface

- Call DataListener methods  when Queue gets full or empty
- Implement tests