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.
what happens if we timeout for one semaphore I guess you should release all of them or maybe safe the state for every semaphore and then walk over it again?