Added External Containerizer.

This patch adds the so-called external containerizer. This
containerizer delegates all containerizer calls directly to
an external containerizer program (which can be specified on
start-up). Few calls have internal fall-back implementations
such as wait(), destroy() and usage().

The protocol for the interactions with the external program
is as follows:

COMMAND < INPUT-PROTO > RESULT-PROTO

launch < Launch
update < Update
usage < ContainerID > ResourceStatistics
wait < ContainerID > Termination
destroy < ContainerID

When protocol buffers need to be provided, the Mesos side of
the external containerizer implementation will serialize the
protos on stdin and vice-versa for reading protos on stdout as
drafted in the above scheme.
Added overloaded killtree for process trees.

New killtree(ProcessTree tree, int signal) traverse process tree and sends a signal to all pids. This is done regardless of presence and state of process.
Patch is used by up coming signal escalation.

Review: https://reviews.apache.org/r/18595
Added liveProcesses to process tree abstraction.

liveProcesses() returns a count of the existing processes in a process tree. This is used by up coming signal escalation.

Review: https://reviews.apache.org/r/18594
Added termination signal escalation on top of ExternalContainerizer.
Executor will ignore TaskInfo if args are passed.

This allows the command executor to function as an "observer executor", which
is needed by some external containerizers.