[!!!][BUGFIX] Generate Value Object hash from property values
This changes the Value Objects' hash generation algorithm to
use the actual properties of the Value Object, not only the
constructor arguments which lead to duplicate hashes in cases
where arguments were empty.
Furthermore the initial approach disregarded everything that
can be done within the constructor (such as trimming, calculations,
This patch delays the generation of the value hash to just after
instantiation, where the Value Object is completely initialized.
The final object properties names and values are then hashed.
Additionally, the handling of DateTime objects has been improved.
The generated ValueHash now also includes information about the
This might be breaking in the unlikely case where the initial
hash calculation leads to the same hash as the new calculation,
for different VOs. Besides, it might lead to duplicate VOs in the
database because the "same" VO can become a new hash due to the
changed hashing algorithm.