Implement MD5-based type fingerprints in JS.

This makes Data.Typeable work, and so fixes #46.
Add test case for Data.Typeable.