Extensibility improvements (public API kept the same)

Things done:
1. connecting EventDispatcher
2. connection DIC
3. moving out object instantiation to dedicated factory classes
4. type hinting using interfaces

Things left to do:
1. verify that in real life components do communicate through event dispatcher
2. upon browser configuration disposal remove it from event dispatcher
3. move "test case ended" event generation to test case class

Related to #9