MDL-38961 behat: New test

According to MDLQA-110, edited wiki
pages may be previewed before saving.
MDL-39054 quiz statistics: move hard-coded text to lang file
MDL-39029 quiz password: autofocus feature added
MDL-39064 changed sequence of directives to separate course content and course listings
MDL-39064 Course listings CSS ported from base to bootstrap theme
Merge branch 'MDL-38958_master' of git://github.com/dmonllao/moodle
Merge branch 'MDL-38957_master' of git://github.com/dmonllao/moodle
Merge branch 'MDL-38940_master' of git://github.com/dmonllao/moodle
MDL-26120 mod_forum: use correct object
MDL-38880 Imported Cloze questions lose embedded images or other media
Merge branch 'MDL-38963_master' of git://github.com/dmonllao/moodle
Merge branch 'MDL-38961_master' of git://github.com/dmonllao/moodle
Merge branch 'MDL-38828_master' of git://github.com/dmonllao/moodle
MDL-38637 CAS Authentication: Undefined index: QUERY_STRING when executing cron
MDL-38678 SCORM: Runtime Environment (RTE) checks not required in case of SCO Assets
MDL-39087 Clarify plugininfo_base::get_uninstall_url() return value

The method now returns null if there should be no 'Uninstall' link at
the Plugins management screen. For non-standard add-ons the method now
returns URL to a general uninstall tool.

Plugin info subclasses can still override the method to provide URL to
their own UI for uninstalling. If the plugin type wants to use the
general uninstall tool also for standard plugins, it should override
this method and explicitly return $this->get_default_uninstall_url().
Otherwise, the 'Uninstall' link will be provided for add-ons only.
MDL-39087 Implement a common interface for uninstalling general plugin

Plugins may use this general tool for uninstallation and eventually
removal of the deployed source code. At the moment, this is implemented
as a wrapper for the core function uninstall_plugin() with an extra hook
in the relevant plugin info subclass.

For non-standard add-ons, the tool can remove the deployed plugin source
code as well, if the web server has required write permissions. Ideally,
all add-ons installed via the new tool_installaddon should be removable
via the web interface as well.
MDL-39087 Purge all caches at the end of uninstall_plugin()

This is necessary now as many plugins management related features
started to use MUC intensively recently. During the development of this
issue, we realized that the plugin was still considered as installed if
caches were not purged.
MDL-39087 Delete all component files in uninstall_plugin()
MDL-39087 Fix missing cronlib inclusion in file_storage::cron()

This is not actually related to MDL-38259 but it was discovered while
running unit tests for file_storage. When running the tests for this
class separately, the cronlib.php was not included (it is included
when this method is normally called during cron execution).