Add MidiInputPort and MidiOutputPort classes (with MidiPort base class)
A MidiDevice can now have multiple input and output ports.
Multiple ports are currently supported only for virtual devices, USB support coming later.
Change-Id: Ib55076aa1374aa46ae4ae76ad93bd717df6d7e21