feat(dockerfile): improve dockerfile and procfile workflow

- add SHA, Procfile and Dockerfile to Build model (if available)
- fix operator precedence bug from deis/deis#890
- add container type check before scale operations (fixes #496)
- add uniqueness constraint check on container type/num
- use SHA in release summary if available
- auto-scale web=1 for heroku workflow, cmd=1 for docker workflow
- add tests for heroku and docker workflows, plus test for invalid process types
feat(builder): update builder to pass SHA/Procfile/Dockerfile (if available)
fix(announcer): detect first exposed port instead of hardcoding to 5000/tcp
fix(schema): remove uniqueness constraint on containers
fix(controller): only scale web=1 if procfile has web entry
fix(scale): move initial scaling logic to model, add tests
fix(migration): squash migrations, add newline
fix(builder): include default_process_types from .release
fix(deploy): rework initial deploy logic based on workflow
fix(flake8): resolve code formatting issues
fix(tests): close db connections during threaded execution

This appears to resolve https://code.djangoproject.com/ticket/22420
allowing us to get test coverage for threads executed within
TransactionTestCases.
docs(developer): flesh out developer docs
fix(scheduler): detect exposed ports from image for PORT envvar
feat(controller): Toggle registration using etcd

Allow to disable or enable the registration using
an etcd setting.
Merge pull request #977 from johanneswuerbach/etcd-register

feat(controller): Toggle registration using etcd
Merge pull request #967 from deis/dockerfile-workflow

Improve Dockerfile and Procfile workflows