Server side authentication works!

Preliminary PR. Please comment heavily, as I don't think it's ready for merge quite yet.

I had to move around some functions to fix the circular imports.
Also, modified authentication decorator to account for permissions.
Finally, updated tests to reflect the changes.

NOTE: I had to do add in some dummy testing code into the `requires_authenticated_user` function as I'm not sure of the best way of doing this. Perhaps @moowiz could help out? :)

Fixes #47 
Yes, that is correct.

The tricky part about doing real user checking is that we need a real access token to test with. I've looked into it a little bit and the only way of doing this is to create a fake Google account. So, I opted for simpler test cases for now.

We could create fake HTTP responses from Google as a harder test.