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