MDL-43734: Prevent purging of all user session cache
MDL-43766 reports: Fixed wrong string variable
MDL-43765 reports: Fixed addtional name warning

Fix the alternate name warning which is generated when course participation report
is viewed
MDL-43800 course: groupings are sorted alphabetically
MDL-43794 Files API Set the mtime of files to extraction time.

The restore cleanup code expects the mtime to be the time of extraction
not the mtime before archiving. If set to the old mtime, the restore
files may be cleaned up before the restore is complete.

This behaviour also matches the behaviour of the zip unpacker.
MDL-43643 chat: do not assign to nonexisting cm_info properties
MDL-43246 give unit tests class a better name.
MDL-43246 some question data mapper unit tests

With fixes for the issues unearthed by these tests.
MDL-43246 question engine: avoid order-by id.

This was breaking with oracle master/master replication. Fortunately all
the places that needed to be changed were private to datalib.php. There
is still some ordering by id there, but only places where we want a
consitent, rather than meaningful, order, so that is OK.

The queries changed by this patch all have subqueries in aggregate
queries that pull out the latest step for a question_attempt. Those
queries used to look for MAX(id) but now they look for
MAX(sequencenumber). This is equivalent (for databases where ids always
increase with time, except for auto-saved steps. In the past,  an
auto-saved step might have been considered latest. Now the latest step
will always be one that has been properly processed. You can aruge that
this change is an improvement. Anyway, it is a moot point. All these
queries are only used in reports which are run on completed attempts,
where there will not be any autosaved data.
MDL-43809 qformat_xml messes up $s in multianswer questions.
MDL-43688 dndupload: fixed positioning across themes
MDL-43761 refactor db manager code to send arrays of SQL to the dml driver
MDL-43761 use single query in mysql when crating tables
MDL-43761 execute bulk sql when modifying db structure

In case of postgresql this uses transactions to allow easier recovery from broken installs.
MDL-43746 fix require_course_login regression caused by MDL-25981
MDL-43757 messaging: Behat feature to test participants messaging

The new test checks that messages can be sent from
the participants block and they can be read when
accesing user's recent conversations.
MDL-43757 behat: Allowing the form field guesser to detect TinyMCE

It includes 2 more minor fixes:
- Escapes values sent to TinyMCE as it was breaking
  when values contained double quotes.
- Adding seconds to the screenshots directory to
  avoid using the same folder for multiple runs.
MDL-43758 performance: New metric, time spent by the database

This patch adds a new performance metric to the performance
info shown by MDL_PERF* vars, the time spent by the database,
it was one of the wonderful @poltawski ideas. To be more specific
the value displayed is the sum of the time elapsed between query_start()
and query_end().
MDL-43450 behat: Improving error messages
MDL-43773 mod_choice: Swap order of name column headings in text export