First complete version of Kafka flowlet

Quick links:

README: https://github.com/caskdata/cdap-packs/blob/feature/kafka/cdap-kafka-pack/cdap-kafka-flow/README.md

BUILD: https://github.com/caskdata/cdap-packs/blob/feature/kafka/cdap-kafka-pack/cdap-kafka-flow/BUILD.md

Please don't scared by the number of lines changed. Only 2800 are in Java class (with quite an amount of javadoc inside). There are only four important/complicated classes:

1. `KafkaConsumerFlowlet` - Contains generic logic on Flowlet lifecycle and process method
1. `Kafka08ConsumerFlowlet` - Contains message fetching logic for Kafka 0.8.x
1. `Kafka07ConsumerFlowlet` - Contains message fetching logic for Kafka 0.7.x. Due to Kafka 0.7.x less good design, the code looks more complicated than the 0.8.x one.
1. `KafkaBrokerCache` - A ZK cache to gather Kafka broker information for 0.7.x. For Kafka 0.8.x, we use the one in Twill
How about:
It's optional since we provide an artifact jar that has the required Kafka classes in it, using the
"embedded-kafka" classifier. Hence, for projects that depends on the "embedded-kafka" artifact,
you won't need this dependency.
Making this optional will prevent maven from treating this as a transitive dependency, and you won't
need to install Kafka 0.7 into your local maven repo manually (as kafka-0.7.2 is not in Maven central).