[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 still think it's more guarding (type hinting) than casting (type casting), but after @stof's explaination, I can at least understand its naming :)