WebCrypto: Add SHA-1 support to crypto.subtle.digest().

This change sets up more WebKit API interfaces for embedders to implement CryptoOperation, and connects them together using SHA-1 as an end-to-end test.

The SHA-1 support is implemented on the blink side as a proof of concept, since it is just a few lines of extra code. However this will be moved over to the chromium side once more plumbing is in place.

Not that this change does not make CryptoOperation inherit from Promise. Instead it directly returns a Promise from finish() and abort(). This was done to avoid potential cycles and memory leaks. Will follow up with the working group to resolve the spec's behavior.

BUG=245025
R=abarth@chromium.org

Review URL: https://codereview.chromium.org/19082002

git-svn-id: svn://svn.chromium.org/blink/trunk@154344 bbb929c8-8fbe-4397-9dbb-9b2b20218538