Add benchmark-context manager

This patch actually mostly finish support of benchmark-context.

* Add context manager that allows to use only specified context.
  Context could be specified through 2 ways:
  1) @base.scenario(context={...})
  2) via task config

* Support of two types of context:
  1) __ctx_hidden__ = True => could be setup only using @base.scenario
  2) __ctx_hidden__ = False => could be setup in both ways

* Support of validation of context types

* Support of order of loading context __ctx_order__
  Context manager will use this number to sort context and chose order
  of creating them.

* Unified "cleanup" context to work only via @base.scenario()

* Great Rally perf optimization - use only required context

* Cleanup decorator is merged to @base.scenario

* Add logging for context

* Improve NovaScenario._boot_server to add to secgroup allow_ssh
  only when we are using allow_ssh context

* Add unit test that checks that all scenario have proper predefined
  context config

blueprint benchmark-context

Change-Id: I4fce466a88075a694a87e72ace72cc522605b72a