MDL-47316 mod_forum: Fix course overview performance regression

 make more efficient use of mod_info cache by processing courses
 sequentially.

Change-Id: I03b808c8a7efc42879ec2689fbd2a9fe7a8f1103
MDL-46391 messages: Display search button under contact list.

Add search button to only Message navigation -> Contacts section.
MDL-46054 web_services: wrong key in exception string
MDL-46984 core_course: added grouping name for activities with no link
MDL-47470 behat: fix 'I navigate to' exception

When a child page is not found
MDL-47492 behat: refer to table column indexes instead of names
MDL-47492 core_grades: Behat test for using scales and mingrade in gradebook
MDL-47426 assign local roles: rewrite query for better performance.

This is an extremely dangerous query, because it includes the user
table twice, along-side two other potentially large tables,
role_assignments and user_enrolments.

The solution is to rewrite the query so that:

1. The subquery is JOINed, not WHERE ... INed. Typically query
   optimisers handle the JOIN case better.

2. Before the join was role-assignments <-> users <-> subquery.
   That is, everything was linked to u.id.

   Now the linking is role-assignments <-> subquery <-> users,
   so the SELECT DISTINT eu1_u.id FROM {enrolled users} is central.
   That seems to send a strong hint to the query optimiser about
   a good order to execute the query.
MDL-28075 question editing: sort out nav bar when editing in a quiz

If you edited a question from the Edit quiz page in a quiz, the navigation
bar was far too long. This was due to some odd code that was trying too
hard to be clever.

Instead, editing a question is now always treated as being logically within
the question bank for the purposes of navigation. That is, even if the
returnurl will end up taking you back to where you where when you have finished.
MDL-28075 question editing: tidy code

Remove an unnecessary else (the if, and else if, always end in a redirect)
and unindent that code.
MDL-36460 mod_forum: Restrict forum subsription list based on availability info
MDL-44536 workshop: Instantiate with the plain course module record
MDL-44536 workshop: Fix missing phpDoc for user report callbacks
MDL-46182 Inefficient query during Moodle upgrade on course_section table.

This part of the code is changing an index on the course_sections table to be unique, for this to happen in the upgrade script the index must be deleted and then the new version added.

Before this change the following was being done:

* The index is removed
* A query to delete records that were not unique on this index is performed
* The unique version of the index is added

After this change the following happens:

* A query to delete records that were not unique on this index is performed
* The index is removed
* The unique version of the index is added

When the original index is present the query uses it, which greatly improves the execution plan.

Before the change an upgrade on a site with around 387967 course_section records the upgrade would be stuck on the delete query for many hours, after the change the time can be measured in minutes.
MDL-46978 gradebook: Edit grade item changes visibility of category
Merge branch 'm26_MDL-47316' of git://git.catalyst.net.nz/moodle-r2 into MOODLE_26_STABLE
MDL-45504 environment: define 2.8 requirements

No changes from 2.7, so this is a simple copy of them.

The MyISAM case (MDL-46064) will be considered for 2.9.
MDL-47536 timezones: update to 2014h (2296 rules)
Merge branch 'MDL-47426_26' of git://github.com/timhunt/moodle into MOODLE_26_STABLE
Merge branch 'MDL-45504_26' of git://github.com/stronk7/moodle into MOODLE_26_STABLE