MDL-35141 Filelib: No icon for epub filetype
MDL-35211 theme_formal_white: updated descriptions involved in MDL-34916
MDL-33857 Increase performance of queries for Server files repository

- file_info class now has new methods get_non_empty_children and count_non_empty_children; added default implementation;
- all core classes extending file_info have their implementation of those methods;
- class repository_local_file used for caching get_children() results is removed;
- class repository_local rewritten to use new methods from file_info;
- added caching of retrieved modules in file_browser::get_file_info_context_module() - this query is slow and executed multiple times on big servers
MDL-35472: Prevent html tags appearing in page titles
Only a problem when formatstringstriptags is disabled
MDL-33857 Increase performance of queries for Server files repository (small improvements)
MDL-35587 - Display grouping name for Drag and Dropped resources
MDL-35644 user_get_details: admin should be able to see description
MDL-35637 group: Fix form submission error that occurs when GD version is not set.
MDL-35198 replace key_exists by array_key_exists
MDL-34257 quiz 'secure' mode: PAGE initialisation order issues.
MDL-35370 cloze qtype: distinguish wrong & unanswered subqs

This affects the subquestions that appear as an embedded text input box.

There are three cases:
1. Input for subq left blank
2. Input for subq was wrong, and matched by a * wildcard.
3. Input for subq was wrong, and did not match any answer.

2. and 3. should look identical, apart from any feedback in case 2.

1. is different. The state should be displayed as "Not answered" even
though the mark for this part is still shown as 0.

There are some new unit tests for these cases.

Also, we slighly improve handling of , for decimal point in multianswer,
although there are still issues.

While working on this, I made some minor clean-ups in shortanswer and
numerical qtypes.
MDL-35620 question engine: should distinguish NULL and 0.

This only matters in an obscure edge case, but it is an edge case we hit
with one of the OU question types.

This load data code is processing the results of a LEFT JOIN, so is_null
is the correct logic.
MDL-30885 quiz: use formchangechecker during quiz attempts.

To avoid the possiblity of dataloss if a student tries to navigate away
having changed some answers.
MDL-34894 course ws unit tests: fix windows problem.

This fixes a weird windows-only failure, as explained in the tracker
issue.
MDL-35680 user selector: more usable when queries are slow.

The problem is to do when you pause a bit, so a search starts, and then
type a bit more before the search finishes. It was behaving like this:

1. Type a bit, then pause.
2. First search request sent.
3. Type a bit more, then pause.
4. Second search request sent.
5. First search request completes.
6. You try to select one result.
7. Second search request comples, overwriting what you are selecting.

This fix works by cancelling the first request before sending the
second.
MDL-35227 SCORM: set completion in correct location.
MDL-35557 enrol/database: use distinct call when getting list of courses that should be added.
MDL-35562 enrol_database: enrolment_sync - don't halt sync on failed search for course.
MDL-35654 theme_anomaly: Added custom menu renderer to aid RTL styling of menu
MDL-34931 core_grade: Fixed grades hidden when activity is hidden