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
map.containsKey(allocationSpec) tries to check if it is the same object (two references to the same instance). However, I want it use the overridden AllocationSpecification.equals()  function. I didn't find a shortcut for the UseCase and so I'm iterating and checking it manually. Is there a better way of doing it ?