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.
Drop ClusterUtils and NodeUtils
Add pointer to proxy-put-metadata-listener branch.
Use .cloneCluster instead of Mapper.read/.write.
Clean up RebalanceUtils and AdminClient

Moved a number of static methods that took an AdminClient argument
from RebalanctUtils to become members of
AdminClient.RebalancingOperations (invoked via
adminClient.rebalanceOps). Also moved createTempAdminClient to be a
static method of AdminClient.

Moved some of AdminClient.HelperOps into new inner class
AdminClient.ReplicaTypeOperations.
Tweaks to Rebalance Controller and Scheduler

Changed '==' to '>=' comparison to control parallelism permitted by
the scheduler. This is defensive programming. Under failure, the '=='
was insufficient. We need to debug/fix that separately. For now, this
change adds some more defense.

Changed some HashSet's to TreeSet's so that they print out in
order. (No perf impact since sets are all small.)

Additional print outs from scheduler so that current set of node (ids)
with work is in the log from the controller/scheduler.

Include donor node in logger.info from StealerBasedRebalanceTask
constructor. This output is now sufficient to translate a task id to a
specific stealer/donor pair in a single line (and all the
partition-stores in follow on lines).