Add HashCode (de)serialization support.

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