Improve MIDI.js loading state machinery
Improve MIDI.js loading state machinery

Now we have five different states:
       -2: waiting for two dependencies to load
       -1: waiting for one dependency to load
INITIAL=0: scripts loaded, no instruments requested, loadPlugin not called yet
LOADING=2: either loadPlugin or loadResource is currently busy
 LOADED=3: plugin is ready for use, instruments loaded

Calls to doLoad can only occur in the INITIAL or LOADED state.
They will transition to the LOADING state first, then upon success
transition to the LOADED state.  After that a new triggerLoad invocation
ensures that any instrument requests which arrived since then get processed.

kortenkamp/CindyJS,kranich/CindyJS,strobelm/CindyJS,kranich/CindyJS,kortenkamp/CindyJS,CindyJS/CindyJS,CindyJS/CindyJS,CindyJS/CindyJS,strobelm/CindyJS,strobelm/CindyJS,CindyJS/CindyJS,CindyJS/CindyJS,kranich/CindyJS,kranich/CindyJS,kortenkamp/CindyJS,kortenkamp/CindyJS,strobelm/CindyJS,kranich/CindyJS,kranich/CindyJS,strobelm/CindyJS,kortenkamp/CindyJS,CindyJS/CindyJS,strobelm/CindyJS,kortenkamp/CindyJS