build: Allow building for various board configs

The board is now fully defined from its config header. make should be
provided with the board name using BOARD=myboard. It then get the MCU
type from it, and automatically add it as -include to the CFLAGS.

The board can also provide a some custom init code, which is used on
the Arduino Micro to workaround a bootload bug.
schematics: dmx: Add the decoupling capacitor to RS485 tranceiver
schematics: power: Fix the regulator input and output capacitors value
Continuously update the outputs instead of waiting for a DMX frame
ndmx_init() doesn't need to return an error code
firmware: Add the OS_main attribute to main() to save a bit of code
firmare: build: Only set the flags once for each goal
firmware: build: Simplify the C/LDFLAGS a bit
firmware: build: Reorder the build command line flags
firmware: build: Allow building eeprom as well as flash images
firmware: Add the nano VM to allow custom behaviors

The nano VM provide a simple stack based VM that run programs from the
EEPROM. The default program for all outputs is to apply the value from
the input with the same id, but boards can provide their own default
program as well.