MD5 implemented in JS based directly off of RFC 1321