[Final Code, but not ready to merge] Credentials Table

Fixes #1389 

Adds a Credentials table to store API Keys and Hashed Passwords. Helps prepare for OAuth support next sprint.

Note: This PR should NOT be merged in as it isn't the final merge. I'll be rebasing this on @TimLovellSmith 's sign-up changes and updating it next sprint. There will be a PR there, but I wanted to get this PR out because it's basically all the functional changes, it's just missing the changes necessary to reconcile it with Tim's changes.