Add skeleton interface for requesting / killing executors
First cut implementation of adding executors dynamically

This provides a framework that keeps track of when to add and
remove executors, and how many. The add part of this framework
is fully implemented minus the backend, i.e. we do not yet
actually ask the cluster manager for more executors, as that
depends on the backend implementation.