fix(controller): set default release image

If you scale an application with `deis scale cmd=1` before an
application has been pushed, it should deploy deis/helloworld.
However, the initial release (v1) does not have a image set for
the release, only the build. Setting the default to deis/helloworld
fixes the "scale before deploy" problem.
fix(client): clear cookies on login, logout, register

We should be clearing all cookies, since we can only be logged into
a single user and cluster at the same time. This fixes the 403 Forbidden
when being logged in immediately after registering.
feat(contrib): add DigitalOcean provisioner booting CoreOS via kexec

This introduces a provisioning script for Deis on DigitalOcean droplets. As DigitalOcean
does not (currently) support CoreOS, we deploy CoreOS on top of Ubuntu 14.04 using kexec
on boot to switch to the CoreOS kernel and initrd. The state filesystem is a loop
mounted btrfs.

The CoreOS bootstrapping is heavily based on Levi Aul's code:

  https://gist.github.com/tsutsu/490f35f48897df0f5173

We don't use Debian 7.0 as base distribution because kexec is unstable on the Debian
kernel.
refactor(contrib/digitalocean): clean up README, act more like other contrib/ scripts

Updates the README to flow more like the other contrib/ scripts.
Also adds a provision-do-cluster.sh
feat(contrib/ec2): launch into vpc

Modifies the cloudformation configuration to create resources within the
confines of a VPC.

fixes #1005
fix(contrib/ec2): fix launching into VPC

To successfully launch into a VPC, we must specify the availability
zones associated with each subnet.
fix(*): fix etcd_safe_set to not override values

Refactors etcd_safe_set so it doesn't overwrite custom settings.

TESTING: rebuild and restart components, setting a non-default
custom value
```console
dev $ make uninstall
dev $ vagrant rsync && make build
dev $ vagrant ssh
coreos $ etcdctl set /deis/controller/webEnabled 1
dev $ make run
```
Make sure the settings have taken effect.

Changes proposed by @aledbf

fixes #1210
Merge pull request #1279 from deis/1275_skip_announcers

fix(scheduler/coreos): skip announcer containers for start, stop, destroy
feat(*): move data containers into new unit files

Moving these containers into their own data files
sets the stage for locking data containers to specific
machines. This also enables us to stop Postgres cleanly on
the database-data container.

closes #638
fix(controller): format command before creating container

The self._command_announceable() check was called inline with code
that formatted the container's command, so no announcer would be
created since the command showed up as "start {c_type}" literally.
The _command property is only referenced in this code.
fix(*): schedule data containers to specific machines

Currently, whenever database, logger, registry, or builder are rescheduled
by fleet, their data container is left on the original machine. The effect
for the user is that they lose their data! This commit schedules data containers
to a preselected machine. If that machine goes down, the underlying service will
go down, but this is preferred to scheduling it on another host that won't have
the data.

Note that this is an interim fix - stateful data should be stored off-host.

closes #1038
test(controller): add regression test for "start {c_type}" bug
Merge pull request #1107 from deis/1038-static_data_containers

fix(*): schedule data containers to specific machines
Merge pull request #1285 from deis/hotfix-app-announcers

fix(controller): format command before creating container
chore(tests): update vendored Docker cli code to v1.1.1
fix(tests): use `docker run --rm` instead of explicitly removing containers
fix(Makefile): only install data containers if they don't exist

Since we are scheduling data containers to specific machines (and
the machine we choose is random each time), we want to be careful
about when we regenerate and resubmit these units.

This commit makes `make install` (and thus `make run`) safe to
run multiple times again since they will now only submit data containers if they don't
already exist.

TESTING: run `make install` multiple times and ensure the units are there when they should
be, and not resubmitted otherwise
```console
$ make uninstall
```
```console
$ make install
Job deis-router.1.service loaded on e35efc85.../172.17.8.100
Job deis-builder-data.service loaded on e35efc85.../172.17.8.100
Job deis-database-data.service loaded on e35efc85.../172.17.8.100
Job deis-logger-data.service loaded on e35efc85.../172.17.8.100
Job deis-registry-data.service loaded on e35efc85.../172.17.8.100
fleetctl --strict-host-key-checking=false load registry/systemd/deis-registry.service logger/systemd/deis-logger.service cache/systemd/deis-cache.service database/systemd/deis-database.service
Job deis-logger.service loaded on e35efc85.../172.17.8.100
Job deis-registry.service loaded on e35efc85.../172.17.8.100
Job deis-cache.service loaded on e35efc85.../172.17.8.100
Job deis-database.service loaded on e35efc85.../172.17.8.100
fleetctl --strict-host-key-checking=false load controller/systemd/*.service
Job deis-controller.service loaded on e35efc85.../172.17.8.100
fleetctl --strict-host-key-checking=false load builder/systemd/*.service
Job deis-builder.service loaded on e35efc85.../172.17.8.100
```
```console
$ make install
deis-builder-data.service already loaded. Skipping...
deis-database-data.service already loaded. Skipping...
deis-logger-data.service already loaded. Skipping...
deis-registry-data.service already loaded. Skipping...
fleetctl --strict-host-key-checking=false load registry/systemd/deis-registry.service logger/systemd/deis-logger.service cache/systemd/deis-cache.service database/systemd/deis-database.service
fleetctl --strict-host-key-checking=false load controller/systemd/*.service
fleetctl --strict-host-key-checking=false load builder/systemd/*.service
```
Merge pull request #1291 from deis/readable_data_containers

fix(Makefile): only install data containers if they don't exist
fix(tests): report errors from `docker pull` on main goroutine

See http://golang.org/pkg/testing/#T.FailNow
Merge pull request #1268 from deis/component-tests-fixes

fix(tests): improve reliability and error reporting for component tests