<issue_start><issue_comment>Title: Zero values in apps/groups doesnt work
username_0: There is a json output broken.
You cannot use ports=[0], and port_index=0

Lets create simple app, put it in group, and see what we got.

```python
from marathon.models import MarathonApp, MarathonHealthCheck,MarathonObject,MarathonGroup
import json

app = MarathonApp(
    id= '/somegroup/someapp',
    cmd='while true; do nc -l $PORT0;done ',
    cpus=1,
    mem=256,
    instances=1,
    ports=[ 0 ], # YOU ARE HERE!
    health_checks = [ MarathonHealthCheck(command=None,
                                          grace_period_seconds=300,
                                          interval_seconds=60,
                                          max_consecutive_failures=0,
                                          path=None,
                                          port_index=0, # ALSO AT PLACE
                                          protocol='TCP',
                                          timeout_seconds=20) ]
)

print json.dumps(
    json.loads(app.to_json()),
    sort_keys=True,
    indent=4, separators=(',', ': '))


group = MarathonGroup([app], dependencies=None, groups=None, id='/somegroup', version=None)


print json.dumps(
    json.loads(group.to_json()),
    sort_keys=True,
    indent=4, separators=(',', ': '))
```

Will output
```json
{
    "cmd": "while true; do nc -l $PORT0;done ",
    "cpus": 1,
    "healthChecks": [
        {
            "gracePeriodSeconds": 300,
            "intervalSeconds": 60,
            "protocol": "TCP",
            "timeoutSeconds": 20 #WHERE IS MY PORTINDEX
        }
    ],
    "id": "/somegroup/someapp",
    "instances": 1,
    "mem": 256,
    "ports": [
        0
    ]
}
{
    "apps": [
        {
            "cmd": "while true; do nc -l $PORT0;done ",
            "cpus": 1,
            "healthChecks": [
                {
                    "gracePeriodSeconds": 300,
                    "intervalSeconds": 60,
                    "protocol": "TCP",
                    "timeoutSeconds": 20 #WHERE IS MY PortIndex
                }
            ],
            "id": "/somegroup/someapp",
            "instances": 1,
            "mem": 256,
            "ports": []  #WHERE IS MY PORTS! 
        }
    ],
    "id": "/somegroup"
}
<issue_comment>username_1: Hmm. This seems kinda strange. My best guess is that this is being lost at the json encoding layer here?
https://github.com/thefactory/marathon-python/blob/2a06da87b8b28711265f78ea671197517ec884b5/marathon/models/base.py#L44

with `minimal=True`?
<issue_comment>username_2: I can confirm that I have the same issue. The bug is caused by MarathonMinimalJsonEncoder, changing it to this fixes the issue

```
        if isinstance(obj, collections.Iterable) and not is_stringy(obj):
            try:
                return {k: self.default(v) for k, v in obj.items() if (v or v is False or v is 0)}
            except AttributeError:
                return [self.default(e) for e in obj if (e or e is False or e is 0)]

```<issue_closed>
<issue_comment>username_1: Pretty sure this is solved in #79