Context Accepts a Generalized Function

Hashing a Context is now accomplished via a generalized function, which
means a client does not have to extend the class in order to implement a
hash.