#2 Authentication

Implements #2, allowing for both CAS and email/password authentication. Refer to the issue for commentary; this PR includes significant changes including guest user functionality, integration tests, and more!