[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.
@WouterJ yup, but your concern is very legit. There are couple of classes in Testwork that are not final. Which is fine as long as the reason behind that is not Behat alone, you're right. Currently we don't have implementation creep from Behat to Testwork, but we do need to keep an eye on this one ;)