More robust setting of data on UserLog, corrected use in generaterealdata, avoid coachreport commands running on central server (BAD)

Conflicts:
	kalite/main/models.py
be able to generate fake coachreport data
hi PDB, nice to meet you, my friend.  NOW GO AWAY.
Merge branch 'release-0.10' of github.com:learningequality/ka-lite into robust_userlogs
needed to increment counters and to sign AFTER setting the counter.
Converting all asserts to ValidationErrors, so that they will be caught and never block actual user behaviors.
guarantee that there's never more than 1 'open' userlog of a single type.  Because if that race condition happens, it's unrecoverable, due to use of get_object_or_None.
making userlog completely robust to simulinaeity
marking completion on exercises and videos, fixing bug on video object creation.
Merge pull request #599 from bcipolli/robust_userlogs

Robust userlogs, fixing up UserLog generaterealdata support, extending support to teacher data