Refactor SnakObjectTest

Removes the strange inheritance and uses proper mocking instead.
Our testing code is not callable in production anyways because we extend PHPUnit classes everywhere. However, how was the previous design better? It used some strange kind of inheritance and abstract providers to build testing objects. Injecting the abstract methods via reflection isn't bad but helps us testing the code in the right places. Code in `SnakObject` should be tested in a `SnakObjectTest` and not in a `PropertyValueSnakTest`. Furthermore, we rely on the fact that `$this->assertEquals( 1, 1 )` does not fail so why not rely on this part of PHPUnit? It is clearly documented, even giving an example [here](https://phpunit.de/manual/current/en/test-doubles.html).