Blob hashes are now stored in the database under the `hashes` table.
They are stored internally as a map of packIDs to a map of versions to a
map of regions to the hash.
On login, a pack ID, version, and hash are required or the login attempt
is rejected.
Hashes can be updated using the `/api/hash` endpoint.
The schema has been updated accordingly.