Unify Context classes and introduce context object

* Unify interfaces of context classes
* Init Context classes only with context object
* Have 2 method setup and cleanup
  a) setup   - will be called inside with after __enter__
  b) cleanup - will be called inside __exit__
* Add common context object that will be shared between all context
  and benchmark scenarios

Second part of blueprint benchmark-context

Next steps:
1) Switch to new task config format (with minimum changes)
2) Move validation from benchmark engine to context.base, runner.base,
   scenario.base classes
3) Turn on context factory (so you will be able to specify any context
   from config file) or request by benchmark any context (e.g. ssh access)
4) Cleanup context object & unit tests

Change-Id: I37e71e2f39a5a27ff7a7a8a7ff0b231a6536923a