spi: Handle NULL rx buffer

This allows one to ignore recieved data without a throw-away buffer
printf: Silence warning
stdio: Use circular buffer for outbuf

This allows us to do partial sends which makes things a bit more robust
against buffer overruns.
stdio: Add vsnprintf
rtc: Add register definitions
MK20DZ10.h: Remove conflicting RTC definitions
rtc: Add some utility functions
Merge pull request #81 from bgamari/rtc

Add real-time clock support
Merge pull request #82 from bgamari/spi

spi: Handle NULL rx buffer
Merge pull request #86 from bgamari/circular-stdio

Circular stdio buffer
spiflash: first version
toolchain: add simple SPI flash access library
lib/spiflash: fail on SPI transfer in progress; return JEDEC ID instead of 0/1
lib/spiflash: allow queuing using multiple contexts
lib/spiflash: fix program/erase bug causing wrong callback data to be used
lib/spiflash: fix callback parameter in spiflash_read_page
lib/spiflash: clean-ups
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
spiflash: Track transaction state

Keep track of whether a given transaction is queued and running.
Otherwise we enter a situation where we will schedule a transaction
multiple times.