Integrating Kafka partitioning scheme with Voldemort cluster.xml

- Rename KafkaConsumerDefinition to KafkaTopicDefinition as it will be used by both client and server
- Read from cluster.xml to initialize the VeniceStore
- Add consistent partition, serializing classes for Kafka to use
- Adding KafkaRoutedStore object for producing objects into Kafka
Considering that our plan is to use the "1_" or "0_" key for partial vs full puts, I'm pretty sure that expecting Strings only is okay.

Unless we are extending to pass in all keys as byte arrays? Then the first byte could be 0 or 1, and the next n bytes could be reserved for the sub-schema id. 

Let me know your thoughts on that.