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.
I wonder if we should have a static `EnumSet<State> PAUSE_ELIGABLE = ...` this makes it simpler IMO