matcha/tock: add support for loading seL4/cantrip from nexus spi flash

Cantrip's seL4 boot bundle is a tarball of:
- seL4 kernel elf image
- capdl-loader elf image: seL4 rootserver + CAmkES components
- cpio archive of built-in apps, models, and opaque files

The loader copies each piece from spi flash to the appropriate place in
memory, starts the smc core running, and then passes boot parameters to
seL4 to do its bootstrap.

Copying the cpio archive to memory is a temporary hack to compensate
for the missing storage manager service meant to provide access to the
spi flash. A 1/2 MB of memory at the end of smc ram is reserved for the
archive. This carve out and the loader work will be eventually be removed.

Specific changes:
- reserve 1/2 MB of smc memory for the cantrip builtins bundle
- overhaul the elf loader to handle the seL4 boot bundle and retrieve
  data from spi flash
- setup hal support for the platform
- extend elf file support for loader needs
- add smc_send_bootmsg api for passing seL4 boot parameters to the smc
  via the mailbox interface
- add smc_ram_memcpy api for copying data to smc memory
- add smc_ram_zero api for zeroing smc memory (e.g. bss)

NB: the cpio archive may be omitted so that when booting on Renode the
    archive can be loaded without involving Tock; this can be used, for
    example, to load a bundle larger than 1/2M together with a larger
    smc memory config for testing

Change-Id: I7af318c25efc3613e44dc126d1e177c2485d48de
7 files changed