Assessment refactoring and question block in answer

See commit messages for specific steps taken
@dragonfi I'd still like to understand exactly : ) When I look at the for loop below, I see that only children which are included in `submissions` are taken into account as potential steps. Does that mean that it's actually JS code that filters the children here by deciding what's in the `submissions` variable? If so, can a smart student who would read the code mess up in any way with the server-side step by sending tempered ajax requests? Or even cheat?