A cleaner private vertex hash calculation

- A new class ElementUtils which currently contians:
  - getPropertiesAsMap that returns an immuntable map of the specified element's properties.
  - Private hash caclulation is based on MapJoiner instead of string builder.
- An immutable list that contains the internal properties.
- Private hash is now calculated when vertex is versioned.
- Enhanced graph tests to assure hash was calculated during vertex
  versioning.