separate out hardware-independent LED code

core-common-lib has a mix of hardware specific and hardware agnostic code. I've split out the LED code that handles brightness, and sharing the LED between the system and user into a separate file. The hardware-dependent parts are made available as external functions (still in `hw_config.c`.) This separation makes it possible to unit test the RGB led management code on gcc without pulling in hardware dependent code.