Refactor SnakObjectTest

Removes the strange inheritance and uses proper mocking instead.
The mock object is tested. The test relies on the fact that the mock object delegates unmocked methods to the original code. Which means this is actually testing parts of the PHPUnit framework.

Or to put it the other way around: This is misusing the reflection functionality of PHPUnit to execute code in a way it is not supposed to be used. This is testing code that's not even callable in production.

Either way, bad, bad design.