Add user communication preferences

Adds a UserProjectPreference model to hold any per project settings.
It's created the first time a user classifies on a project, which
should definitely be moved to a background task at some point.

Closes #84

Also sorry if any formatting is messed up. I did this in emacs, so I'm not sure if I got everything right.