spiflash: Separate transaction state from device

Previously no attempt was made to serialize multiple transactions. This
meant that a long-lived transaction (e.g. a write) followed by another
transaction would result in the latter being dropped as it would be
dispatched while the BUSY flag is asserted. Here we queue multiple
transactions, ensuring that none is dispatched while the BUSY flag is
set.
Allow spiflash modules on other chip selects
Merge branch 'spiflash' into temp-gather

Conflicts:
	toolchain/lib/mchck/Makefile.part
	toolchain/lib/mchck/mchck.h
Merge branch 'circular-stdio' into temp-gather
spiflash: Fixes
Fix thing
Merge branch 'spiflash' into temp-gather