Store revisions of problems

Move most fields from Problem to the new class ProblemRevision.
Move some code to model_base.py

This will allow us to split models code into (semi-)independent modules.
Drop tablename autogeneration.

Be more explicit, use plural form.
Add users and groups
Store problem revisions authorship