User management + auth

Adds basic user management, as well as support for contributors and contributor types. Progress on #13, #9, and #14.
It's supposed to return the new user instance that's created. For example, this allows you to create a new user and then associate them with other models (i.e. make them a contributor). I think it's also what Django expects as a return type as this is an override of a default function.

I understand where you're coming from, though. This method could be improved by adding a try/catch around the user.save() method, which I believe throws an exception if the save is unsuccessful.