Fix passing the context to multiprocessing pool

The patch fixes the problem caused by the fact that objects created in the
init() method of benchmark scenarios - usually servers, floating ips etc. -
are not picklable and thus cannot be passed to the scenario methods throug the
'context' parameter, because these methods are called using a multiprocessing
pool.

Here, a global variable rally.benchmark.scenario.utils.__scenario_context__ is
used to solve the problem (just like the '__openstack_clients__' varible has
been used recently to fix a similar bug). This variable is where the init()
method call result is stored in, which is then injected to the benchmark
scenario via its '_context' variable.

The patch also introduces two new methods in the base Scenario class, namely
context() and clients(). They both just return the values of the corresponding
class variables but are nevertheless useful for the benchmark scenario
developers who no longer need to wonder where the '_context' and '_clients'
class variables arise from.

Change-Id: Ibcf5c78fcaf4539a0a6fa60ba7fe3ac7c4dbe86d
Closes-Bug: #1237624
Blueprint test-engine-init