Added event watching/emitting support to SoundModel.
SoundModel's connect and disconnect calls can now be
watched by installing watchers (callbacks) using
Eventable's on/off methods.
Merge branch 'eventable' into experimental_buildsys
Minor fixes to jsnode.
The jsnode, if it is a source node, now emits a "stop" message
once it has completed its task.
jsnode: If the onaudioprocess function returns a "number of samples processed",
it is used to determine when to cleanup the jsnode. The cleanup condition is
that the number of samples processed is less than the number of output
buffer samples requested to be generated.
Added 'release' rule
Made bufferSize user-specifiable for models.jsnode.
All JS nodes now have stop(t) since it is needed for filter-like
nodes as well. Also, stop time has been made non-strict - i.e. the
node will not end at the specified stop time. The ending is now
controlled by the onaudioprocess callback which may continue to
generate more samples beyond stop time. The jsnode is deemed to be
"stopped" if it returns a number of samples of output computed that
is less than the number of samples requested.