Move scenario args validation to BenchmarkEngine

1. Move the scenario args validation process to the benchmark engine,
   just before the ScenarioRunner class gets instantiated.
2. Add support for different validation strategies:
    a) admin - run using admin clients;
    b) user - run using user clients:
        - In case of pre created users - run for all of them;
        - In case of tmp users - run only from one
          (that will be created specially for this case inside benchmark.engine)

The actual definition of the desired validation stragery should be done by the
@validation.requires_permission(...) decorator, which signals the BenchmarkEngine
which clients to pass to the validation method, e.g.:

    @validation.requires_permission(consts.EndpointPermission.ADMIN)
    def some_validator(clients, **kwargs):
        """BenchmarkEngine will guarantee that this validator gets supplied with
           an admin client; it will skip this validator if no admin client can be
           created."""

This patch also renames self.temp_users in ScenarioRunner and subclasses to just
self.users, thus reflecting the fact that the users may not be temporarily created
but passed to the ScenarioRunner as precreated ones.

Change-Id: I334e83fbc77d7cb014d96d43cadd673071286d14
Merge "Move scenario args validation to BenchmarkEngine"