Full implementation of wallet login. Steps:
- Parse SIWE message and signature from request
- Verify message using siwe-rs crate
- If verification is successful, generate a token, store it in the token table in DynamoDB, and then return it to the caller
Note that PAKE login is not covered here. It will be in a separate diff.