Description
Blur should be able to run in a full cluster environment on completely random ports.
Some things that need to be accounted for in supporting random ports:
1) ThriftBlurControllerServer - binding needs fixed when multiple instances are running.
2) ThriftBlurShardServer - binding needs fixed when multiple instances are running.
3) BlurClient - add two new methods
BlurClient.getClient() - use a default BlurConfiguration to build the conn string from ZK.
BlurClient.getClient(BlurConfiguration conf) - use the passed conf to build the conn string from ZK.
4) Blur GUI ports need randomized
5) DistributedLayoutFactory API should change to only give layout strategies the online shard servers to work with.
6) Remove the persistent registered shard servers *** breaking change ***