Partially define an API for reliable port selection.
Mark RtMidi.h to be C++.

This helps certain editors to select the correct mode
that usually interpet .h files as C headers.
Merge port Id type into PortDescriptor and go further with cascading the API.
Complete the API part of the new PortDescriptor based API

This includes also some reorganisation that moves the common global/local
API out of RtMIDI and the backend api.
Revert renaming MidiApi into MidiBackendApi and rename the other MidiApi.

The new MidiApi is now called CommonMidiApi.
This avoids some compilation errors.
Fix some compiler errros.
Add missing inline functions and reformat existing ones.

This should be better readable.
Namespace based API and get rid of virtual inline functions for RtMidi(In|Out).

This patch includes more than it was intended to. The changes include:
• provide a namespace rtmidi to simplify class names
• Make all functions of Midi(In|Out)? non-virtual.
  Virtual inline functions have several pitfalls.
• provide Dummies for the new ALSA api.
• provide workaround for the major API breaks.
• use references for passing certain pointer arguments and deprecate
  the pointer versions of these functions.
Fix phony make target tests.
Bump library version.

Even though this feature is currently unused we should use
a different library version for future development. While we
provide workarounds for the API the ABI has changed.
Silence some warnings about unused parameters.
Provide some abstraction layer that will eventually handle all generic ALSA
calls.

This layer provides an API that is more consistent with the data used by RtMidi.
On the other hand it allows to optionally use a locking mechanism for all
sequencer calls so that ALSA may use one client for all threads for certain
tasks (or if it is requested).
Provide the implementation part of the prvious patch.

The ALSA output devices should be still considered broken.
Provide the header for the previous patches and pass some strings by reference.
Some whitespace fixes
Implement some functions.

MidiInAlsa::openPort
MidiInAlsa::getPortList
MidiOutAlsa::getPortList

Now, we can do some first tests. Test files follow…
Add first tests for the new port selection API.
Implement opening ALSA output ports.
Fix port handling of old port handling.

This was broken as we use ALSA addresses to store port ids, now. These
are stored as unsigned values.
fix sendMessage which got an error.