First pass of refactoring Coordinator Netty pipeline: using common thread pool instead of isolating
Refactoring Coordinator to use standard Netty pipeline which is more scalable than the previous FatClientWrapper design
Restructuring the Voldemort REST server and Coordinator under a common package: voldemort.rest
Changing vector clock serialization to base64 instead of json to improve performance
Revert "Changing vector clock serialization to base64 instead of json to improve performance"

This was part of performance benchmarking. It got wrong pushed to this branch.

This reverts commit fe8479365d8f1eca8f34a09817caa93ed7437dcd.
RebalanceController Scheduler + Unit Test
Add license info
Get rid of replica type from the code base

(1) Add new message to the admin protocol.
(2) Introduce a new class for rebalacing called RebalanceTaskInfo.
(3) Remove replica type from everywhere else.

Added // TODO (Sid) style comments where I wasn't sure.
Also added // TODO (Sid)  on the donor based path.
Fix tests that rely on replica type
Add special case for an empty partition list
Minor clean up

Clean up variable/class names, comments, javadocs.
Remove unneeded imports and annotations
Remove dead code
Added 'details' option to KeyVersionFetcherCLI

The 'details' option results in the inclusion of the partition ID,
node ID, and host for each fetched key-version. This should help
relate specific changes in the key-versions fetched before and after
rebalance to specific steps in the rebalancing plan.
Sort versions displayed by KeyVersionFetcherCLI
Drop KeyDistributionGenerator and Entropy

The intended usage of KeyDistributionGenerator and Entropy has been replaced. The PartitionAnalysisCLI and PartitionBalance tools replace the 'skew' estimation functionality of these tools. The KeySampler and KeyVerionFetcher replace the verification functionality of the EntropyChecker.

The helper method KeyDistributionGenerator.getUniqueStoreDefinitionsWithCounts has moved to StoreDefinitionUtils.getUniqueStoreDefinitionsWithCounts.
Complete dropping KeyDistributionGenerator
Drop server-side rebalancing optimization, fix proxy put config

The RebalancePlan object now produces "optimized" plans. I.e., data is not moved to a server that already hosts that data. This means that server-side optimizations to not fetch data the server already has are not needed.

The voldemort config had a parameter to turn proxy puts on/off. Now that they are tested, they should always be on for the sake of making sure rebalances are abortable. Also, the proxy put default number of threads was one. It is now set in the same manner as nio selectors.

Sorry for all the unnecessary white space changes. I need to reset my eclipse settings.
Removed maxTries option from Rebalancing

maxTries was a hack to work around problems with the scheduling of
rebalancing tasks. The new scheduler (is supposed to) ensure that no
node is doing more than one rebalancing thing (stealing or donating) at
time. Therefore, not being able to schedule an asynchronous rebalancing
task (stealer-based) on a node is a big problem and should not be
retried.
Sundry clean up in voldemort/utils

UpdateClusterUtils
- added new utils class
- moved all cluster & node manipulation methods to this class. (E.g.,
  methods that tweak partition IDs on a node, and methods that copy
  all nodes in a cluster, etc.)

Cluster
- replaced implementation of .cloneCluster() with another helper
  method's implementation.

PartitionBalanceUtils
- new utils class
- moved all helper methods that analyze cluster/storedef to this class

RebalanceUtils
- many helpers moved out of here to more other, new util classes

ClusterUtils  & NodeUtils
- found new homes for all helper methods. Will drop these files in
  next commit.