crt0: support running from dataflash
When running from loader.asm, we're loaded into RAM so everything in
our address space is writable. When running from dataflash, we're
read-only.
On start, load in a RAM page in the other slot, copy our 16kb of
dataflash to RAM, jump there, swap the RAM page into the slot where
we started, then jump back. This makes our 16kb of address space
read/write on the fly.