SHA512

This pull request adds an implementation for SHA-512 into `sha.js`.

To do so required fixing the logic in `hash.js` which, while it worked for `"sha256"` and friends, was incorrect as per the [NIST paper](http://csrc.nist.gov/groups/STM/cavp/documents/shs/sha256-384-512.pdf).

Overall, not too many changes, mostly just implementation.
I used node's `sha512` implementation to generate the test vectors.

I intend to use these vectors: http://csrc.nist.gov/groups/STM/cavp/documents/shs/shabytetestvectors.zip
But just haven't had the time to parse them yet.