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