Calculate points correctly and give points during fixed block.

Also, mark the exercise stage (`playlist` vs `playlist_fixedblock` vs `playlist_completed`) on `AttemptLog.context_type`.

Plus, other random exercise-related fixes and tweaks.
Thanks for this!