Refactor 3 = Refactor 2 + refactored KafkaStreamSuite further to elimite KafkaTestUtils, and made Java testsuite more robust

Refactor 2 - https://github.com/jerryshao/apache-spark/pull/6
- Added back the callback on add/store data
- Changed offset check to distinguish between offset not existing and offset being 0
- Added a lot of docs on the callback's semantics
- Increased timeouts

Additional changes over Refactor 2
- Refactored KafkaStreamSuite to eliminate KafkaTestUtils
- Made Java unit test more robust and less time consuming.
Also here `synchronized {currentBuffer += data; listener.onAddData(...) }`.

What do you think?