Tools depend on Node 0 to be available

Added a new override for getRemoteStoreDefList which takes no parameters
and identifies one of the nodes, for it to be used.

Fixed all the tools (not used in production code path but could be used
by SREs) code, which used NodeId 0 as default to use the new overload.

VoldemortMultiStoreBuildAndPushJob seems to have the issue, but not
sure, whether it is used in production, so just added the comment.
Delete should use GetVersion instead of Get

1) Currently Delete uses Get instead of GetVersion before doing delete.
This can cause the Get to count towards Quota and is also unnecessary
overhead when you want to delete things.
2) Now GetVersion is attempted and if multiple versions are encountered,
then a Get is done to do the read repair.
3) Put uses duplicated code, the code is consolidated. Made the methods
private. I think I should replace the GetVersion method with the new
method I wrote, but not sure what is the use case and saving that for a
later date.
Merge pull request #211 from arunthirupathi/node0Issue

Tools depend on Node 0 to be available
DataCleanup job should not run during rebalance

1) There is a check to not start Data Cleanup job during rebalance,
but after it is started, there is no periodic check.  This causes the
data cleanup to compete with rebalance.
2) Check every 10,000 entries scanned to make sure that there is no
rebalance in progress.
3) Added error condition around the data retention to make sure that if
it is set to 0 or lesser days the value is ignored and an error is
logged. Previously if it is set to 0, it will wipe out your entire data.
Polish up the Java Client example
Merge pull request #213 from zhongjiewu/better-example

Polish up the Java Client example
Migrate from stores.xml to STORES folder in all example configs
Merge pull request #214 from zhongjiewu/example-config-cleanup

Migrate from stores.xml to STORES folder in all example configs
Log warning for GET ALL and DELETE

Log warnings for other than GET and PUT.
Merge pull request #210 from arunthirupathi/deleteGetVersion

Delete should use GetVersion instead of Get
Releasing Voldemort 1.8.13
Merge pull request #212 from arunthirupathi/CleanUpRebalance

DataCleanup job should not run during rebalance
Slop for delete operations

Problems:
1) Exception handling of delete is very different at 4 places ( on
normal response, required failure, quorum failure) and after pipeline is
finished.
2) The exceptions are reported again and again ( They are not removed
from the map).
3) Some places ignore obsoleteVersionException, some others report it.
4) There is a zombie state abort, there is no way to reach this state.
5) Multiple slops could be sent, because of the issue 2. When the
pipeline is aborted, no slops could be sent.

Solution:
Defined a common method, so that all 4 places call into the same method.
Only the condition for calling is different. Race conditions still
exist, after zone failure check but before pipeline finishes the
exception will go missing, slops will not happen, but the chances are
reduced.
Got rid of the state PerformDeletedHintHandoff as
QuotaExceededExceptions will not be reported as failures. Now doing it
in place.
deletes InvalidMetadata is not handled correctly

Previously the InvalidMetadata exception was just reported, but the pipeline did not abort and retry.
Now if the pipeline is not finished it will abort and retry, otherwise just reported.
Delete requests do not abort on InvalidMetadataException

Parallel deletes do not abort the pipeline immediately on InvalidMetadata requests.
Now after receiving an terminal error from handleResponseError the execute method
returns so the pipeline processor will abort further processing.
Merge branch 'deleteSlop2' of github.com:arunthirupathi/voldemort into deleteSlop2

Conflicts:
	src/java/voldemort/store/routed/action/PerformParallelDeleteRequests.java