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.
I'd be pretty clear what the test is doing. You'd not be able to derive the hashing algorithm from it, though since this is a thing relevant to the model in general, I think it's much better to have this properly documented then to simply mirror the implementation in the test. People creating tools around Wikibase, such as WDTK, might well want to know how to compute the hash. (This also shows how having a PHP class name in there is _very_ odd.)