SHA Cleanup

This is a standing pull request.

I would ideally like to add sentinel versions of these algorithms, making it faster than using std::distance to discover however many bits we're looking to hash. We shall see.