fix #250, refactor stream replay api and impl

a major change including

1. refactor stream replay api as per Sean's comments in #241 (checkpoint and storage directory are removed)
2. move stream kafka implementations to external folder
3. update KafkaStreamProducer and KafkaStreamProcessor against the above changes

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/intel-hadoop/gearpump/251)
<!-- Reviewable:end -->

What if we cannot get enough messages?

pull(num: Int) should be best effort pull. If we cannot get num messages, then we just return what we get.