Placement Policy API

1. Added PlacementPolicy API. Only supporting DISTRIBUTED runnables for now.
2. Allocating Containers for one runnable instance at a time, instead of grouping them together based on Resource Specs. 
3. Added blacklist support for DISTRIBUTED PlacementPolicy. 
4. TODO: Implement PlacementHints (added placeholder). 
5. Added PlacementPolicyTestRun Class with a method testDistributedPlacementPolicy to test the current implementation.

Gourav
DEFAULT is (will be) used if user specify just the PlacementHints (and no PlacementPolicy) for a set of runnables using 
<code>add(PlacementHints placementHints, String name, String...names)</code> 
which calls 
<code>addPlacementPolicy(PlacementPolicyGroup.Type.DEFAULT, placementHints, name, names)</code> internally.

UNCARED is to classify runnables  for which neither PlacementHints nor PlacementPolicy is specified.

Currently, they both have same behavior because PlacementHints is still to be implemented. 
I'll create a JIRA for implementing PlacementHints and assign it to me - if that's ok ?