Implement DataListener interface

- Call DataListener methods  when Queue gets full or empty
- Implement tests
Merge branch 'master' into android