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
Simplify it to

```java
AllocationSpecification other = (AllocationSpecification) obj;
return (instanceId == other.instanceId) &&
        Objects.equals(resource, other.resource) &&
        Objects.equals(type, other.type) &&
        Objects.equals(runnableName, other.runnableName);
```