Test if getHash is static

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.
The original idea was to replace all `serialize()` function calls with code like this. Then I realized this is pretty much pointless because of the way `serialize()` just calls the `...->serialize()` methods.

Sure, I could just do some `$this->assertSame( '8d7917cacfd2f9d727d37d0ef0a538e753c2bfe0', $hash )`. But this wouldn't be better in terms of readability.