When a site has policies but a user has not logged in, a banner is
displayed to inform the guest user of the polciies. This banner was
inserted by Javascript at the end of the DOM, so keyboard users had to
tab through the whole page to reach it.
This commit makes the following changes:
* Change the callback used to display the policy banner from
_before_standard_html_head to _before_standard_top_of_body_html.
* Define the banner's body text in an HTML element, rather than a
Javascript parameter.
* Set absolute positioning on the banner for behat sites, so it does not
display at the top of the page and overlap the site header.
* Revert use of the standard_head_html_prepend hook in tool_policy from
MDL-79076.
The combination of these changes means that the banner will be output
near the start of the HTML DOM, so will be accessible to keyboard users
early on in the tab order until dismissed. However, it will still appear
visually at the end of the page, to avoid clashing with the site header.
There was an accessibility issue with the previous icons that we used
the same "checked" shape just in different colours for different
meanings. New icons added for the new statuses:
* partial - a warning icon for the overall status column that the user
has only some policies accepted, not all.
* pending - that we did not hear yet from the user - whcih is different
from a declined policy.
The patch introduces a new property of a policy document called
"Agreement style". It allows the admin to define if the policy should be
accepted together with all others on the consent page (legacy and
default behaviour) or on its page before the consent page is reached
(the new optional behaviour).