[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.
As soon as we open it, the BC concerns become much bigger (look at the Symfony BC rules, and remove everything where inheritance is involved. You will see that the list is much smaller). This is why we prefer keeping classes final in any place where it is possible.