Benchmarks: Simplify start benchmark logic

Simplifies the logic for submitting benchmarks. Moves all the cluster
update state logic into adjacent code blocks (was previously scattered
throughout class file). Makes a clearer separation between code that
processes cluster meta-data and code that submits benchmarks for
execution.

Minor ancillary changes include:
- Makes naming more consistent by prefixing 'Start' to actions related
  to starting a benchmark.
- Additionally renamed and added a few small utility methods for
  validating existence of benchmark-eligible nodes.
- Changed method and variable names from 'benchmarkName' to
  'benchmarkId' to make everything consistent.
- Added test hook for mock benchmark service.
- Added test hook for monitoring and validating cluster state changes.