add test for hash.check()
allow hash.format() to accept a format string

If you pass a string to hash.format(), it should wrap it in
hashable.format(str).
add hash.set(), which takes either a string or data
der
fix jsdom tests (asynchronous, argh)