feat(contrib/digitalocean): Use native CoreOS integration

Use the native CoreOS experience as recently added by DigitalOcean.

This rewrites the previous provisioning script and replaced the tugboat
dependency by the new docl tool dependency.
Docl was written specifically to support the operations we need.
Once a new DigitalOcean CLI comes out with support for the metadata
flag the use of Docl can be reexamined.
Merge pull request #1776 from nathansamson/realcoreosdo

Use Real CoreOS on DigitalOcean
chore(*): remove deis-builder-data
refactor(controller): chaos scheduler tests and cleanup
Merge pull request #1917 from carmstrong/remove_builder_data

chore(*): remove deis-builder-data
Merge pull request #1913 from gabrtv/chaos

Chaos test framework with improved error handling
fix(*): Announce the published port to etcd

Announce the external instead of the internal port to etcd. Currently
all components are using the same internal and external port, so this
never broke deis.
Before publishing etcd, scan whether the internal port is opened
Builder listens on 22 (internal) and is published on 2223
chore(*): Rename PUBLISH to EXTERNAL_PORT

This makes the boot logic more understandable. This commit also fixes
some wrong comments, about what is published and what is checked.
chore(cache): Remove moved systemd unit file
Merge pull request #1864 from johanneswuerbach/announce-correct-port

fix(*): Announce the published port to etcd
ref(scheduler): introduce deis/publisher

In Deis's scheduler abstraction, we run a "sidecar" systemd unit which
publishes the running host and port of the application to etcd for
service discovery.

The issues with this sidecar container are as follows:

- it must live on the same host as the container
- it must wait for the container to come up before publishing
- it relies on using the docker client directly

The last point is crucial. This means that we are effectively
monitoring the docker client for container uptime, which is not the
same as monitoring the container directly.

This has been refactored into a micro-service image called
deis/publisher. Publisher listens directly to a docker socket
bind-mounted into the container and listens to the docker events API
for running containers. Running containers that follow the same format
as our current naming scheme (e.g. hardy-woodsman_v2.web.1) are
published to etcd for service discovery. This allows us to remove the
hard dependency on running a sidecar container to publish the app
container to etcd. Instead, one container per host publishes all
apps running on that host.

MIGRATING: to migrate to this change from existing hosts, you can run
the following:

    ><> # rsync publisher/systemd/deis-publisher.service to every node
    ><> for i in deis-1.example.com deis-2.example.com; do ssh core@$i -c "sudo systemctl enable /home/core/deis-publisher.service && sudo systemctl start /home/core/deis-publisher"

Then, you'll want to remove each announce sidecar attached to the applications:

    ><> fleetctl destroy <appname>-_<version>.<proctype>.<conatiner ID>-announce
ref(controller): remove announce sidecar

this has been replaced with deis/publisher
fix(publisher): rely on TTL to remove container

When a container stop action has occurred, the container is no longer
available. Therefore, we cannot remove it from etcd. This is fine
because we set a TTL, so the container will eventually die.