Standard implementations for hashCode(), equals(), and toString()

These new static methods can be used for arbitrary implementations of
the WDTK data model. They evaluate object based on their interfaces
only. This makes it easier and cleaner to introduce additional
implementations for WDTK interfaces.