fix(controller): do not deploy unless build is present

In terms of 12 factor's best practices, a build and configuration is a
release. Currently, we create and deploy a new release with any change to
an application. This is because we create an initial build and release on 
app creation. With this change, the initial release is not created until the
first build has been created.

Other notable changes:

 - the initial release is now v1, changed from v2
 - the release's image field has been removed in favour of an app's ID +
   the release's version
 - lots of the view logic has been refactored into the models
Nitpicky, but we aren't being consistent about string formatting here. My rule of thumb was "if it's more than 2 strings being added together, use `format()`," but that's from days when minimizing string copying was fairly important in python. But it just seems odd to use string concatenation here and `format` just below it, for the same purpose.

Just a quibble, not in our coding standards of course.