MDL-40313 questionbank: Add question filtering API

Add new API for filtering questions, refactoring the options to display old questions
and include subcategories into new question_bank_search_condition classes.
Make the new API pluggable via local_[pluginname]_get_question_bank_search_conditions.
MDL-36005 formslib: Move the help icons out of the form labels for accessibility.
MDL-31487 fix FEATURE_CONTROLS_GRADE_VISIBILITY for quiz.

This is a followup to MDL-18301. That fix missed the following points:

1. On the edit categories and items screens, all items had an eye-con to
control the visibility, even if the visibility was controlled by the
module.

2. Changing the visibility of a grade category change the visibility of
all items within it, even if the visibility was controlled by the
module.

3. The quiz ingored $cm->visible when controlling whether its grade item
was visible.
MDL-22236 Webservice file upload - Allow webservice file uploads direct to a draft filearea.

Via post to /webservice/upload.php
MDL-22236 user webservice: add_user_private_files

Add webservice for adding files to user private files.
MDL-22236 webservice : Remove filearea restrictions on user draft areas.

It does not make sense to apply restrictions to the size of a users draft areas
so this is only checked if uploading direct to user private files.
MDL-41073 do not delete plugininfo caches when testing if upgrade necessary

This should help with performance for all users when admin is logged in
because these caches need to be purged only after upgrade.
MDL-41086 rework detection of necessary upgrades
MDL-36002 core: Make drag and drop keyboard friendly

This change adds keyboard support to core drag and drop.

Selecting a grab handle and hitting enter (or space) will
open a menu of possible drop targets and allow you to choose one.

The only other UI change this implies is we need to show the grab
for blocks.
MDL-36002 dragdrop: focus fix and exception catching

This sets the focus correctly after a cancel or drop event.
It also catches exceptions from the lock/unlock functions.
MDL-36002 dragdrop: Add simulated event for keyboard drag drop.

This is to prevent any accidental state change in Y.DD.DDM.
MDL-22236 webservice upload files: Update unit tests
MDL-41019 refactor string managers to new core_ classes
MDL-41019 improve language caching

Includes:
* no more hacky reloads, everything is written only once and kept until cache reset
* lang menu list is now cached in MUC
* both string and lang menu caches are compatible with local caches on cluster nodes
* config-dist.php cleanup
MDL-41068 profile: Repair profiling after box API change

The box API was used with an extra incorrect parameter
in the profiling code.  It worked without issue until
the introduction of error checking in MDL-40842.  It
has failed since then.
MDL-40044 Roles: Added role_deleted event and replaced related add_to_log
MDL-40044 Roles: Added role_capabilites_updated event and replaced related add_to_log
MDL-40044 Roles: Added role_allow_*_updated events to replace add_to_log on role allow page

Added events:
1. role_allow_assign_updated
2. role_allow_override_updated
3. role_allow_switch_updated
MDL-40044 Roles: Updated role_assigned and role_unassigned event to remove add_to_log
MDL-30001 WEBCT Import does not work for 2.0