Add `hostname` support for `GROUP_BY` constraint
Fix performance issue with `GROUP_BY` constraint

Assume there are three hosts. Host1 has 2 tasks, while host2 and host3
both have 1 task. We should assign tasks to either host2 or host3, but
in the original implemetation, it waits for only one of the two hosts.

This commit also simplified the implementation, all tests passed.
Task health checking by app version.

- HC manager now tracks checks by appId + version
- Added TaskTracker.getVersion
- Call healthCheckManager.addAllFor from
  DeploymentActor during start and restart to
  avoid a race between health check reconciliation
  and the initial task health update from the
  executor health check system
- Added missing health check reconciliation calls
- Fixes #688
- Fixes #697
Updated Scala version in .travis.yml
Merge pull request #757 from mesosphere/scala-version-in-travis

Updated Scala version in .travis.yml
fixed bug in the MarathonScheduler that led to launched tasks not being removed from the queue
added a test for readding of unlaunched tasks
MarathonScheduler: split expr to induce type check
Merge pull request #766 from mesosphere/wip-fix-task-launching-drexin

fixed bug in the MarathonScheduler that led to launched tasks not being ...
Addressed review comments for #752.

- Added internal readers-writers lock in
  MarathonHealthCheckManager.
- Cleaned up unnecessary pattern matching.
- Removed unused constructor param of type
  AppRepository in MarathonHealchCheckManager.
- Other minor refactoring.
Merge pull request #752 from mesosphere/697-health-checks-by-app-version

Task health checking by app version.
Lock handling fix in MarathonHealthCheckManager.
Added Daemon -- companies using Marathon
Merge pull request #768 from farukd/patch-1

Added Daemon -- companies using Marathon
Added DELETE /v2/deployments/{id}?force=true to
cancel a deployment without creating a new one
that rolls back to the previous state.

- Adds MarathonSchedulerService.cancelDeployment
- Fixes #755
Added docs for `DELETE /v2/deployments{id}?force`
Merge pull request #767 from mesosphere/755-delete-deployment-no-rollback

Added DELETE /v2/deployments/{id}?force=true
Setting version to 0.7.4
Setting version to 0.7.5-SNAPSHOT
Expose ports in env as PORT_XX.

Make it possible to refer to declared ports by number when
starting/configuring an app.

That means that if you put the following in your app manifest:

{
  [...]
  "ports": [80, 443]
  [...]
}

Then the env for your app will contain the following variables:

PORT_80=32185
PORT_443=32184

Port mappings are also supported, so if you put the following:

{
  [...]
  "container": {
    "type": "DOCKER",
    "docker": {
      [...]
      "network": "BRIDGE",
      "portMappings": [
        {
          "containerPort": 8080,
          "hostPort": 0,
          "servicePort": 9000,
          "protocol": "tcp"
        },
        { "containerPort": 161, "hostPort": 0, "protocol": "tcp"}
      ]
    }
  }
  [...]
}

Then these vars will be added to the env:

PORT_8080=32185
PORT_161=32184

Fixes #588