Consistency with upcoming docker support in Mesos

_Not yet for merge_: pending release of `mesos-0.20.0`.

- [x] Clean up mesos dependency to point at a stable release.
- [x] Test common docker failure modes

@guenter @tnachen 

To use the new `ContainerInfo`, add this to your app definition JSON:

```json
{
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "group/image"
    },
    "volumes": [
      {
        "containerPath": "/etc/a",
        "hostPath": "/var/data/a",
        "mode": "RO"
      },
      {
        "containerPath": "/etc/b",
        "hostPath": "/var/data/b",
        "mode": "RW"
      }
    ]
  }
}
```

where `volumes` and `type` are optional (the default type is `DOCKER`).

To supply credentials to pull from a private repository, add a `.dockercfg` to the `uris` field.

For convenience, the mount point of the mesos sandbox is available in the environment as `$MESOS_SANDBOX`.

At a lower level, the semantics of `TaskInfo` are changing a bit.  See the details as outlined in #437.

This PR also adds a new field to the app JSON called `args`.  It is invalid to supply both `cmd` and `args` in the same app.  The behavior of `cmd` is as in previous releases (the value is wrapped by Mesos via `/bin/sh -c '${app.cmd}`).  This change mirrors API and semantics changes in the Mesos `CommandInfo` protobuf message starting with version `0.20.0`.  This new mode of specifying a command allows for safe usage of containerizer features like custom Docker `ENTRYPOINT`s.  This `args` field may be used in place of `cmd` for the default command executor.  For more information, see the associated Mesos reviews: ([24619](https://reviews.apache.org/r/24619) and friends).