Extensible hashes (breaking change)

Extensible hashes allow you to keep up with Moore's law by changing the work units required to hash passwords over time, or swapping out the hashing algorithm when security flaws are discovered.

Now, each password hash contains a JSON-encoded record of:

* salt
* hash
* hashMethod (algorithm)
* iterations (or work units)
* keylength

This allows the verifier to verify the password, even if the format changes over time, and allows the system administrator to scan the user database for vulnerable users who need to change their passwords and upgrade to the latest password hashing standard.