Resolve build issues on Oracle JDK8

Mostly pretty sane, caused by the change to hash functions which changes order in output sometimes.

The last change (for contact info setting) looks to be the right fix, but I'm still not sure why the invoke behaviour changed between JDK7 and JDK8, or why the original code tried to set the old contact information back over the new contact information only to have it overwritten in the save() call.
I don't like this because TreeMaps are slower? Number of items is small so it may not matter ...