Fix bug: Don't accidentally grant too many permissions

Don't grant the collapseThings permission.
Break out saveLogin() to separate class.
Refactoring: Break out inner functions.
Use (Login, Identity) instead of LoginRequest.
Use classes LoginAttempt, IdentityRef, OpenIdDetails.
Support email/password users

- Add new columns:
  - DW1_IDS_OPENID.PASSWORD_HASH
  - DW1_EMAILS_OUT.CREATED_AT, TYPE
- Implement PasswordIdentity login, e.g.:
  - insertPasswordIdentity(..)
  - loginWithPassword(..)
Add index on site and email for password identities.
Make insertIdentity() work with PasswordIdentity, not only OpenID.