IDynamicShardingClient Wrapper interface for the sharding client

This exists so that we can swap in an HTTP one or testing one if needed. 

IDynamicShardingConnectionInfo Interface for classes that contain dynamic sharding connection info 
IShardHelper Interface of an object that describes the sharding strategy to adopt for a configuration. 
ITestsPool Interface describing a pool of tests that we can access and run 


DynamicShardHelper Sharding strategy to allow work remote work queueing between multiple TF instances 
DynamicShardingConnectionInfoMessage Data-holding class in order to make sending via the feature server easier. 
LastShardDetector When running local sharding, sometimes we only want to execute some actions when the last shard reaches invocationEnded(long)
LocalPool Implementation of a pool of local tests 
ParentShardReplicate Replicate a setup for one device to all other devices that will be part of sharding. 
RemoteDynamicPool Implementation of a pool of remote work queued tests 
ShardBuildCloner Helper class that handles cloning a build info from the command line. 
ShardHelper Helper class that handles creating the shards and scheduling them for an invocation. 
StrictShardHelper Sharding strategy to create strict shards that do not report together, 
TestsPoolPoller Tests wrapper that allow to execute all the tests of a pool of tests.