[BUGFIX] Fix calculation of identifier for value objects
The generateValueHash advice is a before advice, thus it needs to use
the arguments given to __construct() for calculating the hash. This is
safe, since for value objects everything contributing to their value has
to be given as constructor arguments.
Cleans up the unit tests along the way.