Fixed WEBCRPT-16, WEBCRPT-20, WEBCRYPT-21, WEBCRPT-22

WEBCRPT-16: Allow zero-length data in encrypt/decrypt and sign/verify
WEBCRPT-20: Diffie-Hellman test fail (test code bug)
WEBCRYPT-21: HMAC key usage not enforced correctly
WEBCRPT-22: generateKey() for AES-KW key does not verify usage
correctly.

Also fixed code bug and matching test bugs related to JWK importKey
usage verification.

Fixed a few other misc bugs in the test code.

This change syncs with Netflix Perforce nfwebcrypto CL 1912515.