Replace random service ports in docker mappings.

- Fixes #714

After the fix:

_application/json_

```http
GET /v2/tasks HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Host: mesos.vm:8080
User-Agent: HTTPie/0.8.0
```

```http
HTTP/1.1 200 OK
Content-Type: application/json
Server: Jetty(8.y.z-SNAPSHOT)
Transfer-Encoding: chunked

{
    "tasks": [
        {
            "appId": "/bridged-webapp", 
            "healthCheckResults": [
                {
                    "alive": true, 
                    "consecutiveFailures": 0, 
                    "firstSuccess": "2014-10-23T07:00:50.753Z", 
                    "lastFailure": null, 
                    "lastSuccess": "2014-10-23T07:05:50.203Z", 
                    "taskId": "bridged-webapp.4cef0b11-5a82-11e4-9c31-ba49ee782560"
                }, 
                {
                    "alive": true, 
                    "consecutiveFailures": 0, 
                    "firstSuccess": "2014-10-23T07:00:44.010Z", 
                    "lastFailure": null, 
                    "lastSuccess": "2014-10-23T07:00:44.010Z", 
                    "taskId": "bridged-webapp.4cef0b11-5a82-11e4-9c31-ba49ee782560"
                }
            ], 
            "host": "10.141.141.10", 
            "id": "bridged-webapp.4cef0b11-5a82-11e4-9c31-ba49ee782560", 
            "ports": [
                31002, 
                31003
            ], 
            "servicePorts": [
                9000, 
                10000
            ], 
            "stagedAt": "2014-10-23T07:00:41.099Z", 
            "startedAt": "2014-10-23T07:05:41.494Z", 
            "version": "2014-10-23T07:00:29.594Z"
        }, 
        {
            "appId": "/bridged-webapp", 
            "healthCheckResults": [
                {
                    "alive": true, 
                    "consecutiveFailures": 0, 
                    "firstSuccess": "2014-10-23T07:00:50.750Z", 
                    "lastFailure": null, 
                    "lastSuccess": "2014-10-23T07:05:50.212Z", 
                    "taskId": "bridged-webapp.495d0aaf-5a82-11e4-9c31-ba49ee782560"
                }, 
                {
                    "alive": true, 
                    "consecutiveFailures": 0, 
                    "firstSuccess": "2014-10-23T07:00:38.009Z", 
                    "lastFailure": null, 
                    "lastSuccess": "2014-10-23T07:00:38.009Z", 
                    "taskId": "bridged-webapp.495d0aaf-5a82-11e4-9c31-ba49ee782560"
                }
            ], 
            "host": "10.141.141.10", 
            "id": "bridged-webapp.495d0aaf-5a82-11e4-9c31-ba49ee782560", 
            "ports": [
                31000, 
                31001
            ], 
            "servicePorts": [
                9000, 
                10000
            ], 
            "stagedAt": "2014-10-23T07:00:35.141Z", 
            "startedAt": "2014-10-23T07:05:41.503Z", 
            "version": "2014-10-23T07:00:29.594Z"
        }
    ]
}
```

_text/plain_

```http
GET /v2/tasks HTTP/1.1
Accept: text/plain
Accept-Encoding: gzip, deflate
Host: mesos.vm:8080
User-Agent: HTTPie/0.8.0
```

```http
HTTP/1.1 200 OK
Content-Type: text/plain
Server: Jetty(8.y.z-SNAPSHOT)
Transfer-Encoding: chunked

bridged-webapp	9000	10.141.141.10:31002	10.141.141.10:31000	
bridged-webapp	10000	10.141.141.10:31003	10.141.141.10:31001
```
I would prefer

```scala
} yield {
    val mappings = pms.zip(servicePorts).map {
      case (pm, sp) => pm.copy(servicePort = sp)
    }
    c.copy(
      docker = Some(d.copy(
      portMappings = Some(mappings)
  ))
)
```