Add HashCode (de)serialization support.

Deserialization accepts mixed case hash code strings.
Serialization produces lower case hash code strings.