fix(controller): validate app structure values

This guards against `deis ps:scale web=-1` and other bad input.

Fixes #1557, refs #1511.
It's nicer to look at, but all of the other tests are written this way. A spacing change in this single PR would make it stylistically different than the rest of the tests. That's probably better left for another PR to make the change holistically.