core: introduce context pattern

top level commands and queries create context, this context is inherited by
every command that is executed within the scope of the top level commands.

this approach enables inheritance of security context, correlation id,
and any other data that should be kept execution.

The end result is eliminating the usage of ThreadLocal usage,
which have many disadvantages and should be avoided almost by any cost.
For example the inability to keep context when using complex patterns.

Topic: AAA
Change-Id: I310f5f77fff78b3232ee77fe63791425fd521516
Signed-off-by: Yair Zaslavsky <yzaslavs@redhat.com>