MDL-36986: Adding course_restored event trigger
MDL-32652 - Make block drag-drop work throughout Moodle

The central "content" region on My Home / user profile pages also needs to
be initialised in lib/ajax/blocks.php in order to allow blocks to be
dropped into that region successfully.  Some tweaks were also necessary in
order to correct the "content" region's structure in order for drag-drop
to function on this region on these pages.

Non-standard block regions (including the central "content" region
used by My Home and user profile pages) were causing the temporary empty
block region used as a drop target to sometimes appear in the wrong place.

The call to init_requirements_data (which includes the block drag-drop JS)
happens at a late enough stage in page generation that we can simply
pass the context ID through to the JS, so that it can be sent as part of
the AJAX request.  This prevents lib/ajax/blocks.php from having to try
to guess the context from the other bits of information it receives, so
block drag-drop should now work everywhere without issues.
MDL-37646 Assign: Quickgrading fix when using grading filters or lots of students.
MDL-37710 Assign: Fix pluginfile permission checks for student viewing their own team submission.

This change adds a function to the assign class to allow the permissions for a group submission
to be checked and updates all the submission plugins to call it.
MDL-36206 - Unit Test - Create unit test for pagination bar
MDL-37780 fix 1.9 restore on windows
MDL-37780 make sure there are no windows line endings in test files
MDL-37780 hack around some unicode date formatting issues on Windows
MDL-37785 theme_base: remove duplicate .dir-rtl file-picker css rules from styke/core.css
MDL-37775 theme_canvas: Changed ADD a block from center align to left in style/blocks.css
MDL-37781 Check for switching the workshop phase without waiting for cron

Now we are checking for the need to switch the phase when the main
view.php is displayed to any user (previously this was done via cron
only). To give our subplugins (such as the scheduled allocation method)
a chance to do what they need to do, the workshop_viewed event is
triggered before the phase is actually switched.
MDL-37781 Allocate workshop submissions without waiting for cron

Now we are checking for the need to execute the allocator every time the
main view.php is displayed to any user. Previously this was done by cron
only.
MDL-37746 qtype_shortanser: avoid normalizer_normalize dangers.

When an error occurs, normalizer_normalize just silently returns null,
which is dangerous. Here, we wrap it in a safe helper function.
MDL-37801 mod_glossary - encode / decode links to 'showentry' pages during backup & restore
MDL-37806 Add new workshop class method to return pending assessments

This is a simple wrapper around workshop::get_assessments_by_reviewer()
that filters assigned assessments and returns just those that were not
graded by the reviewer yet.
MDL-37806 Display 'Save and show next' button when assessing workshop submissions

The button is displayed only when there is a pending (that is not
assessed yet) submission to assess.

AMOS BEGIN
 CPY [savenext,mod_assign],[saveandshownext,mod_workshop]
AMOS END
MDL-36322 Errors when updating a Moodle instance with some misconfigured cache stores
MDL-36322 cache: cache stores now test connections during construction
MDL-36322 cache: clarified docs for initialise and construct
MDL-36322 cache: implemented cache_store::create_clone