Update the IUserLoginStore<TUser> implementation and add tables necessary to store logins

- Denormalize on write again so we can lookup both by user id and by login provider
- Use compound primary key for logins by provider
- Also update id to userid when referring to a user id just to be consistent across tables