SHA 2: Revenge of the SHA.

One of the major reasons for this update was to more easily allow "running
hashes"; the ability to hash a partial message, emit the current hash, and then
continue adding more data before getting a final hash. This appears to be a
requirement for several secure protocols, so hopefully this update should
support it.

There are performance regressions in this update, but I have not found the
performance crushingly slow. Further updates should address this.