Adds ./crypto and standardizes hash usage

This pull request is a bit of mess, but it is simply the state of affairs until all the byte arrays are transitioned properly to `Buffer`s.

In short, it removes `src/util.js` and replaces it with `src/crypto.js`.
Unfortunately to do this required touching a lot of pre-existing code, but it would seem the code base is better for it.