[!!!][BUGFIX] ValueHash is now generated from property values

Currently only the Value Objects contructor arguments are included in
the value hash.

This leads to duplicate hashes in cases where arguments are empty.
Furthermore this approach disregards everything that can be done within
the constructor (such as trimming, calculations, etc.).

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
timezone.

This is a breaking change that will lead to duplicate ValueObjects.

Change-Id: Iaf4d2a28bcd8fc5bf2c749f8021171456616e45c
Fixes: #51236
Fixes: #37357
Releases: master