change the components.bus.Bus API

The Bus.update() method now only tells the bus to update. The old
behaviour (which was to read the buffer, set the leds accordingly,
update the bus and then clear the buffer) is now delegated to the new
flush() method.

Bus.__set_led() shall now be known as Bus.set_led()

I2C_ADDR, EN_OUTPUT_ADDR, EN_ARM[1-3]_ADDR and UPD_PWM_ADDR are not
global anymore and are now part of the Bus class.
change the components.led.Led API

Add Led.unsafe_set() and Led.unsafe_buffer(). These functions do not
check anything.

Add Led.bus().

GAMMA_TABLE* are not global anymore and were moved in the Led class.

Led.__check_brightness() shall now be known as Led.check_brightness().
optimize components.led_set.LedSet

LedSet.buffer(), LedSet.light() and LedSet.off() previously relied on
Led.buffer(), Led.light() and Led.off(). Since the Led functions check
the brightness and tell the bus to update itself, and since they were
called on for each led by the LedSet functions, many unnecessary
operations were done. The current version of the LedSet functions now
rely on Led.unsafe_set() and Led.unsafe_buffer() in order to reduce the
amount of operations.
fix components.bus.Bus.flush()

The previous version performed unnecessary saves of the LED states.
Also, it always updated the bus and emptied the buffer whereas the
current version does so only if needed.
optimize components.board.Board

Board.all(), Board.off(), Board.led_set() and Board.buffer() performed
too many operations (because they called their safe Led counterparts on
each led of interest). They now rely on their LedSet counterparts which
already minimize the number of operations.
Merge branch 'optimization' into dev

This is optimizes various aspects. In order to achieve this, the
components.led.Led and components.bus.Bus APIs underwent subtle changes.
bump v0.2.0