stm32/spi: Replace all SPIx_I2S_BASE with SPIx_BASE

Latest versions of all reference manuals refer to the address as SPIx_BASE, and
simply name some of the individual registers as SPI_I2SXXXX.  Likewise, the
interrupts are simply SPIx, not SPIx/I2Sx.  Rather than hacking more duplicates
into the F0 and L0 parts where this was turning up, remove the pointless _I2S_
from SPI2/SPI3 and make it all consistent

Compile tested only, with the examples collection.

Signed-off-by: Karl Palsson <karlp@tweak.net.au>

Fixes #331
Fixes #347
stm32: Add timers 9-17.  This should support all F0, F1, and F2 products
stm32: i2c: actually keep bit 14 set as per datasheet.

Old code did three writes, new way actually seems to follow datasheet
properly.
init: call pre_main before C++ constructors

This moves the platform specific initialization function pre_main
in front of C++ constructors. This is especially necessary for
platforms which need to setup the stack pointer (pre_main itself
is inline, hence no stack needed for this function).
stm32: gpio_toggle: ensure correct state of non-toggled pins.