fix(controller): validate app structure values

This guards against `deis ps:scale web=-1` and other bad input.

Fixes #1557, refs #1511.
Could some of this be a bit spaced out?

EG:

```python
        # scale to a negative number
        url = "/api/apps/{app_id}/scale".format(**locals())
        body = {'web': -1}
        response = self.client.post(url, json.dumps(body), content_type='application/json')
        self.assertEqual(response.status_code, 400)
        # scale to something other than a number
        url = "/api/apps/{app_id}/scale".format(**locals())
        body = {'web': 'one'}
        response = self.client.post(url, json.dumps(body), content_type='application/json')
        self.assertEqual(response.status_code, 400)
```

```python
        # scale to a negative number
        url = "/api/apps/{app_id}/scale".format(**locals())
        body = {'web': -1}
        response = self.client.post(url, json.dumps(body), content_type='application/json')
        self.assertEqual(response.status_code, 400)

        # scale to something other than a number
        url = "/api/apps/{app_id}/scale".format(**locals())
        body = {'web': 'one'}
        response = self.client.post(url, json.dumps(body), content_type='application/json')
        self.assertEqual(response.status_code, 400)
```