The `M.util.set_user_preference` method (plus accompanying helpers)
are now deprecated, in favour of the `core_user/repository` module
to achieve the same.
Update current implementation to proxy calls to the new API ensuring
backwards compatibility, while emitting copious developer debugging.
dirname() is a slow function compared with __DIR__ and using
'/../'. Moodle has a large number of legacy files that are included
each time a page loads and is not able to use an autoloader as it is
functional code. This allows those required includes to perform as
best as possible in this situation.
This patch introduces two new blocks global_navigation_tree and settings_navigation_tree
both of which have been designed to make full use of the new navigation objects available through
the $PAGE object.
Bulk of this code is within lib/navigationlib.php