hash: cryptographic and non-cryptographic hashing algorithms

hash provides a generic interface for use with hashing functions.
