DRY passport strategies

Merged passport strategies down to single function. However, I dropped the specific provider fields from the User model and have some concern about migrating from the old style to this. I tried to mitigate that somewhat with the model virtuals, but still need some way to pull the data out of provider specific fields and into `providerData` if providerData is empty and one of the others is not. Assistance in that area would be welcomed.