Added support for launching tasks by TaskInfo.

Prior to containerizer API, a task could either 1) define the executor
to run one or more tasks or 2) define the command to run. In the
latter case, the slave would generate an executor info which started
the internal mesos-executor. However, this scenario got more involved
when we introduced the notion of containerizes/containers and with the
upcoming external containerizer.

Ideally, what we want is the ability to deal with five scenarios:
1) A task defines an executor to run 2) possibly within a container
image.

3) A task defines a command to run 4) possibly within a container.

5) A task defines a container image only (the container runs necessary
tasks).

As it is right now, executors are necessary to run any command and/or
container. But it should ultimately be up to the containerizer how to
do this.

This patch extends the containerizer API with one over-loaded launch
method:

Previous: Future<Nothing> launch(..., executorInfo, ...)
New:      Future<Nothing> launch(..., taskInfo, executorInfo, ...)

The latter is specifically to run the standalone tasks and provides
the generated executorInfo for convenience and is used for bookkeeping
withing the slave. Eventually, this can be obsoleted.

In the longer term, we can hopefully obsolete requirement for present
executors for standalone tasks all-together.

Review: https://reviews.apache.org/r/20576