MDL-47221 task: allow 'random' time definitions

When working against external services it can be advantageous to not
have automated tasks all hit the service at the exact same time from
many different installations.

This change allows the use of 'R' in hour/minute fields of the scheduled
task definition so a task will be installed with a 'random' hour/minute
value for these sort of occasions.

Note that the task will be installed in the database with a defined
time, this simply randomises the time chosen when loading from the
definiton.
MDL-46210 langimport: Rearrange code

Factoring code into a controller class so that the update
can be put into a scheduled task (and be a bit tider).
MDL-46210 langimport: task for updating langpacks

Now langpacks will be updated by scheduled task every day rather
than updating manually.
MDL-46210 langimport: logging for install/update/remove

Now that we have sceduled tasks updating the langpacks, its useful
to log which actions have occured.
MDL-46210 langimport: behat tests

Behat tests for lang import. To run these tests you must define the
TOOL_LANGIMPORT_REMOTE_TESTS constant - because they rely on the
download.moodle.org infrastructure.