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
I tried using Objects.equal() inside AllocationSpecification.equals() but it gives stack overflow - I think that's because Objects.equal() in turn, uses overriden equals method of the first argument. 

Besides, I can only return Objects.equal() result if it is returning true i.e. I can only replace the first "if" statement by Objects.equal.

Could you throw more light on the feasibility and benefits of Objects.equal() ?