Performance improvement in oscillators

A couple of oscillators were doing x / (1 / ampl) when they could have
done x * ampl for the same result (aside from rounding errors, which
don't seem to be audible.) 30% faster.
Better error when you forget to implement wave_function
Envelopes

Envelope class and two implementations thereof. OnOffEnvelope is
supposed to eventually replace the current trivial note start / stop
logic. ADSREnvelope implements Attack/Decay/Sustain/Release, but
Release doesn't have any use at the moment as rests don't appear to be
implemented anyway.