Add sha512 and sha384

Also factored out sha224 to just using a sha256 context and a few other
small fixes. sha512 and sha384 by proxy does not currently work.