support MD5.clone() and SHA.clone()

This adds support for the MD5.clone() and SHA.clone() methods. In testing, it resolves the error that occurs when one of those methods gets called and then the clone gets updated with additional data; but I still see a "socket not open" error when a certain consumer tries to write to a TCP socket, which may be an issue in this code.