[WIP] Testers refactoring

This is a big refactoring of testers towards a singular interface. This should be the last piece of puzzle for 3.1.

This refactoring abstracts all interfaces into two - `Tester` and `ArrangingTester`. In order to support singular interface, `TestContext` and `RunControl` interfaces were introduced to properly encapsulate tester arguments. This refactoring allowed to do a great simplification of hooked and event-dispatching testers.

### Motivation

1. This refactoring should enable very easy fix of #650, #653 
2. It also fixes unnoticed bug in outline examples isolation (they aren't really isolated in 3.0)
3. Much simplified code of all testers, including decorators
4. Preparation for Testwork extraction and release

### BC Breaks

This refactoring effectively removes old tester interfaces, which obviously breaks backwards compatibility. Hence, this PR is in *WIP* state. There will be an additional BC-layer for extensions created prior to 3.1. If all goes well, we will fully support old interfaces for extensions that used them, meaning if you created one for 3.0, in 3.1 it should just work.
It seems a bit strange to me to open some closed classes since it turns out Behat needed to override them. Imo, if Behat overides scenario event classes, it's also likely another library would override another event class.

This is a problem with closing your API, you're never sure when you're going to override something.