Fix waveform concurrency issues. Possible fix for Bug #1383404

* Use const shared pointers for waveforms.
* Move all std::vector sizing operations to the Waveform constructor. No
  vector state is allowed to change after the constructor finishes.
* Clarify comments.
* Remove waveform mutex usage in WOverview variants.
* Use the track's waveform pointer to atomically swap the waveform
  rather than mutating the waveform in place.
* Remove unused code.
> is there a reason you need to use the bare pointers here?
> 
> could you do m_waveform = WaveformPointer(new Waveform(blah blah blah))?

Previously I had AnalyserWaveform using a ConstWaveformPointer so that was why. I'll change it to what you're suggesting.