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.
yeah we should really test stuff like this - maybe we can add tests where nodes drop and in that case we should just kill the benchmark?