Implementing Server-side Stores for Write Operations

This review is getting quite big, so I'm going to cut it off here at a working point. Code is to be merged into a separate branch (not voldemort/master)

Includes:
- PUT and DELETE workflow working through VeniceStore
- Included configuration by store, rather than by node
- Cleaned up code as per Sid's and Felix's comments

Not Included:
- Offset Management
- Throttling
I find these two constructors make the code a bit hard to understand. Why not instead lay it out like this:

```java
if (!partitionOffsetMap.containsKey(partition)) {
    // We initialize offsets at -1
    partitionOffsetMap.put(partition, new Long(-1));
}

task = new VeniceConsumerTask(this, seedBrokers, port, topic, partition, partitionOffsetMap.get(partition), consumerTuning);
```