make MidiListener accept HardwareSerial or SoftwareSerial
reorg MidiListener to not loop. (Instead, its run function must be called from the main loop
Rename MidiListener::run -> MidiListener::poll and cleanup the module a bit