Match core crypto API outputs.

Specifically, crypto-browserify has been returning base64'd output when binary encoding is requested, which was breaking my SASL processing.

This expands the test suite to test all combinations of hash algorithms + encodings, and ensures that they are exact matches with what node's crypto module returns.

The ascii encoding option was removed because node's crypto library doesn't have that option anyway, so a major version bump will probably be needed if this is accepted as is.