UART: Increase the maximum message size to 128.
SDU: Remove dependency to null termination.

Previous implementation was able to send only null terminated
strings. The new implementation uses the first byte of the circular
buffer to hold the length of the buffer and uses
chSequentialStreamWrite() instead of chprint() to send the message.

USB initialisation seems to need a one second sleep. Move it to
initialisation function. This slows down the whole init process but
then the USB subsystem is more ready to transmit messages on time.

There still seems to be some initial delay and if the main
application should wait a second or two before sending a burst of
messages over USB.
EXTINT: Fix compilation on STM32F1.
I2C: Rewrote to support multiple I2C instances.

With the new API all I2C users registers an instance for the client
and uses the returned index in subsequent I2C operations.

Enables the use of multiple I2C busses simultaneously.
i2c: Fix indentation.
I2C: Fix duty cycle

Change duty cycle to FAST_DUTY_CYCLE_2 to enable 400KHz bus speed.

Add asserts for I2C operations' return values.
I2C: Remove set_address() API function.

sc_i2c_set_address() was added for extra functionality that is
actually done in a different way, so removing the unneeded API call.
Configs: Remove global hardcoded value for I2CD

The new I2C API can use multiple I2C busses simultaneously and the
bus is specified in sc_i2c_init().