make one instance of DedicatedMultiThreadRunner usable by several consumers

use Run to define thread info, source and action
only class state is stoplight
extract IMultiThreadRunner and rename DedicatedMultiThreadEnvelopeProcessor to MultiThreadEnvelopeProcessor

different threading models from this point forward should be implemented as IMultiThreadRunner instead of IEnvelopeProcessor