crypto: support custom pbkdf2 digest methods

Make the HMAC digest method configurable.  Update crypto.pbkdf2() and
crypto.pbkdf2Sync() to take an extra, optional digest argument.

Before this commit, SHA-1 (admittedly the most common method) was used
exclusively.

Fixes #6553.

Suggested reviewer: @indutny

While going over the code I realized that crypto.getHashes() indiscriminately removes uppercase spellings of cipher/digest names.  That's problematic because some (like DSA) don't have lowercase aliases.

I've added two proposed solutions: one removes the filtering entirely, the other tries various spellings of ciphers/digests.  Comments welcome.