LDEV-3292: Get rid of learner progress object juggling when compling an activity. It looked like there were several objects but all changes were done on the same one. It could also lead to two objects referencing the same row in DB which resulted in an exception while saving.
LDEV-3971: Move code that creates a session on tool side to the same transaction where core tool session gets created. Otherwise a learner can read that the core session is created and enter the activity where tool session does not exist yet.
LDEV-4107: Once one learner gets a confirmation that Scratchie is finished, he marks the tool session as finished for everyone. This prevent leaving out learners who did not get the confirmation because their websockets were still being set up.