Use web workers to compute SHA256

A new pull requests with local branches for #473. Address/fixes #186.
Hm, just because in the case of errors interaction is clearer. Which error handler will be called? Only the one from `update`, one from `finalize`, or both? Chaining them is clearer. You know that you will be calling `finalize` only if there was no error until then.