Remove self-comparisons from tests

This should fix #130.

It turns out PHP's `serialize()` function just calls the `...->serialize()` methods provided by the `Serializable` interface in `Snak`. See the implementations in `SnakObject::serialize` and `PropertyValueSnak::serialize`. Only properties that are used in these methods become part of the serialization.

This patch:
* Adds tests to make sure the `getHash` implementation is static and doesn't change, e.g. when new fields are introduced.
* Adds basic tests for `No`- and `SomeValueSnak`.
* Removes strange self-comparisons from tests.
* Simplifies some loops.
* Renames some strange variables.
Doing this here and having it overridden for the test cases of which it is different is really not nice. This is code sharing via inheritance which suggests the production code to do the same. It also makes the test a lot less readable.