Fix WS2811 RAM usage by using the correct types.
Cleanup WS2811 code and sanitize API.

Removed many magic numbers.
Deduplicated code.
Removed unnecessary local variable usage.

The LED Strip is initialised to WHITE briefly on power up so that it's
possible to visually check that all LEDs are functioning correctly -
white uses each individual RGB diode and draws maximum power.

Introduced an API to allow any code to change any or all LED colors
individually.  This takes a little ram since an additional buffer is
needed - 3 bytes per LED, in addition to the DMA buffer.
Ensure battery cell detection happens after everything has powered up.

Previously, on the OLIMEXINO at least, initial readings are lower than
normal readings and that meant that the battery warning voltage was
incorrectly set.
Merge branch 'master' into ws2811