many: add support for using GRUB
This adds a whole new bootloader support, documentation with examples and the complement of unit and integration tests.
In retrospective this was much easier than supporting pi-boot, mainly because the format of the interaction layer (grubenv) is trivial in comparison to the expressive power of config.txt. There are some missing bits - namely the boot assets update logic is not yet present. Unlike on the pi, we don't have a good way to A/B update those, so it will have to use a new mechanism that we have to spend some time on.
Integration tests don't really reboot and exercise GRUB boot script. That will only come with the use of Oniro images in spread later this year.