fix(builder): disallow password authentication

Ref: #1340

Replaces the previous password prompt with an error message similar to:

    kamina ~/tmp/deis/example-go (git:master) ✔
    ❯❯❯ git push deis master
    Permission denied (publickey).
    fatal: Could not read from remote repository.

    Please make sure you have the correct access rights
    and the repository exists.

Ideally we would brand this with a Deis-centric message, but for now
this should be good enough until we overhaul the builder completely.
Merge pull request #1652 from deis/fix/builder/no-password

fix(builder): disallow password authentication
feat(builder): automatically run `git gc` on deploy

Ref #987

This should be replaced by a cronjob after we switch to the new init,
but this will do for now.
fix(controller): validate app structure values

This guards against `deis ps:scale web=-1` and other bad input.
Merge pull request #1654 from deis/feat/builder/auto-run-git-gc

feat(builder): automatically run `git gc` on deploy
feat(slugbuilder): build without using a pipe for git archive

Ref #785
Ref deis/slugbuilder#9

This will break builds if the corresponding slugbuilder patch is not
merged first.
Merge pull request #1658 from mboersma/1557-validate-ps-scale

fix(controller): validate app structure values
fix(controller): validate Cluster.domain field
Merge pull request #1657 from mboersma/1623-validate-cluster-domain

fix(controller): validate Cluster.domain field
Merge pull request #1641 from deis/fix/builder/no-pipe

feat(slugbuilder): build without using a pipe for git archive
feat(controller): support for application key/value tags
feat(client): support for application key/value tags
chore(controller): fix south default values with a data migration