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 
I think if this line were changed to "if False:", none of the tests would be affected because right now dummy admin checking and real admin checking are completely different code paths. Is that right? If so, it worries me. Not sure how to fix it.