use non-conflicting led names for buttonboard

This isn't a complete fix - ideally multiple devices of the same type
shouldn't conflict either.
add struct for device types
assign and use piuio device types
pin will never be greater than # inputs
factor out single use of report_key
allocate leds dynamically based on # outputs
move device type detection earlier in probe
allocate old_inputs dynamically

Since this array is sized based on the number of multiplexer options, we
should allocate it dynamically.
move led allocation into piuio_init

Pretty much the same scenario as old_inputs, so let's put them together.
remove unused #define constants