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
you also must remove it from the blacklistRemovals. Otherwise, suppose you call clearBlacklist(), the addToBlackList(nodedX), then nodeX will be in the removal list and the addition list. and I don't know what the meaning of that is.