make sourceNode configurable (live mode)
make sourceNode configurable (live mode)

- Chrome has no way to destroy MediaElementSourceNodes, and only allows one per audio element
  - so if we want to to re-use an audio element, we must also pass a MediaElementSource node
  - get from ctx.sourceNode
  - use config.sourceNode to set
- also disconnect analyser/scriptProcessor nodes on destroy()
- also refactor gainWorkaround so gainNode goes after input node instead of before, easier to use

m1el/woscope,m1el/woscope,cvn/woscope,cvn/woscope