[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.
I understand, but if it comes down to "Close everything of Testwork, except if we override it in Behat", I'm -1. That would couple Testwork develop to much to Behat develop. Testwork is a very great library to use for other testing libs, which might need to be able to do custom things with other classes than Behat.