99% working MD5.

Contains some test code (passing weird values in
4x4 matrix).
This will be cleaned up in coming commits.