Decided to split this interface into two.  That way you can get future functionality without needing to provide scheduling.
Changes to make use of the most recent interface changes.  ExecutorLimiter and TaskExecutorDistributor both have submitter capabilities now (even though they only take an executor).

In addition ExecutorWrapper was created to easily convert an Executor into a submitter (and even handle ListenableFutures)
Merge remote branch 'origin/unstable_staging' into unstable_staging
Tried to make these function calls un-ambigious to prevent confusion and possible problems.