Refactored testers in Testwork. Added setup routines

Removed notion of events and hooks from the testers, but added instead
an extension point (setup routines) so both events and hooks could be
added back through their own extensions
EventDispatcher extension provides dispatching testers

EventDispatcher extension now extends testers infrastructure with event-
dispatching testers. This is a follow-up to the previous testers
refactoring
HookExtension listens to events produced by dispatch able testers

This commit decouples hooks from both testers and event dispatcher. Now
hooks dispatching routine is handled through a simple event subscriber.
This is a follow-up to the previous refactoring
Pretty formatter is just an event listeners tree

Refactored pretty formatter to be an event listening tree. This helps
decoupling flow control and presentation logic and keep overall
formatter code very clean and precise
Properly tearDown all event-dispatching testers
StrictInterpretation::isFailure returns Boolean, not integer
SoftInterpretation implemented as a default result interpretation
TestResult refactored to be an interface
Setup and Teardown VOs were introduced to handle test setUp and tearDown
Hook scopes were introduced as a way to decouple hooks from events
Hook subsystem was refactored to use scopes instead of events
Hookable testers are introduced
Event subsystem was refactored
Refactored Behat to support Testwork changes
Printer helpers are in the appropriate namespace
Removed unused hook listener
Removed non-used printer arguments and fixed broken doc blocks
Implemented scenario hook printer
Implemented step hook printers
Implemented example hooks printing