Benchmarks: Re-factored benchmark infra

Major re-factoring to use a dual-channel strategy for executing
benchmarks. Uses cluster metadata for managing lifecycle events, but
transport channel to send benchmark definitions and results between
master and executor nodes.
it might make more sense to wrap this in a state object remove the lock for reads like:

```Java

static class State {
  final boolean paused;
  final boolean complete;
  final boolean running; 
}
```
and only make that one volatile?