Removing duplicate code for pre-scheduled/interactive notes
Removing duplicate code for pre-scheduled/interactive notes

This removes a lot of code duplication, making it easier to modify
the core synth logic without accidentally not making the necessary
modifications in all places. This _does_ mean that the semantics
for playing a pre-scheduled note become a little convoluted (you
have to schedule the gateOn and gateOff events separately), but
the benefit of the having unified logic seems to outweight that
drawback.

jstrait/jssynth,jstrait/jssynth