Move vinyl control processing to the engine thread

Get rid of the separate vinyl control processing threads.  Move various operations around to keep the engine thread operations as lightweight as possible. 
The vinyl processing code is very tolerant of errors.  Dropping samples is fine, and won't cause any problems on the processing side.  Moreover, the lock only gets held when the devices are being reset or stopped and started anyway, so the data is likely to be invalid anyway.

Double-buffering the processor list?  hm.  It seems dangerous because getting the timing for the deletion of the old pointers might not be timed correctly.

I will at least make sure that we don't test for this lock unless vinyl control is active on at least one deck!