Make sure the mesos-fetcher exits if the slave terminates.

Review: https://reviews.apache.org/r/24722
Introduced "states" for Docker containers to transition between.

The DockerContainerier needs to be able to properly clean up Docker
containers, regardless of when they are destroyed. For example, if a
container gets destroyed while we are fetching, we need to not keep
running the fetch, nor should we try and start the Docker
container. For this reason, we've split out the states into:

  FETCHING
  PULLING
  RUNNING
  DESTROYING

In particular, we made 'PULLING' be it's own state so that we could
easily destroy and cleanup when a user initiated pulling a really big
image but we timeout due to the executor registration timeout. Since
we curently have no way to discard a Docker::run, we needed to
explicitely do the pull (which is the part that takes the longest) so
that we can assume we won't have to wait very long for Docker::run to
complete.

Review: https://reviews.apache.org/r/24754
Improved safety of "higher-level" io::read/write.

These functions tend to read and write "everything" and are often used
with things like Subprocess. A common pattern is that someone will
read from Subprocess::err/out but not hold on to the Subprocess
instance which will cause the underlying file descriptors in
Subprocess to get closed before the io::read/write has completed. To
make this safer, we do what we did with io::redirect and automatically
duplicate the file descriptor.

This was also a good opportunity to remove io::splice from the public
interface since it's not being used and is inherently dangerous.

Review: https://reviews.apache.org/r/24755
Cleaned up usage of io::read for new semantics.

Review: https://reviews.apache.org/r/24757
Allow override without CommandInfo::value to run in command executor.

Review: https://reviews.apache.org/r/24730
Allow external isolator flag to be backward compatible.

Review: https://reviews.apache.org/r/24731
Added TODO for os::killtree.