\SMW\ContextAware + SMW\BaseContext

Making an object ContextAware allows to inject objects that depend a
context rather than directly linked to the DIC and it also enables support
objects to be accessed on requests rather than during instantiation.

Depending on a context (base, mock etc.) will give full control over the
object life-cycle as the context internally represents the current invoked
 DIC and with it its available object definitions while when changing to
an object definition is necessary it is done in only one place, the
DependencyContainer.

Instead of injection a builder directly through a constructor, we will use
the context as a single representative to carry out the responsibility
to enable access to a builder and its definitions.

## Notes
http://accu.org/index.php/journals/246

Change-Id: Ib6fce6d34f0b9101d4781cde0dd5fe268d30605c