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 have created another Constructor: 
<code>
 public Hosts(String host, String...moreHosts) {
    this.hosts = ImmutableSet.<String>builder()
      .add(host)
      .addAll(Arrays.asList(moreHosts))
      .build();
  }
</code>

The static convenience method just calls this constructor. Thus, there is only one ImmutableSet copy created. 

Let me know if it's OK. (I cannot make first constructor private since AM uses it to deserialize twill specs).