New High Performance MD5 Algorithm

New MD5 implementation that uses buffers and fully supports updating and
digesting progressively. Instead of rehashing the entire input each
`update` we now store an internal buffer and hash that data whenever we
get to `BlockSize` (64) bytes internally. Digest causes the data to be
padded and the internal buffer hashed and flushed.

Wherever possible buffers are used. This new version IS NOT implemented
in the overall library yet and WILL have discrepancies between the
Nodejs API and ours.