Use CancelationTokens for PrimaryOnlyService to help with the cancelation of running instances.
There are three aspects of this:
- Make PrimaryOnlyService and instances own a CancelationSource, and pass tokens from the source to the Instance::run function
- Remove the usage of ScopedTaskExecutor in favor of using the base executor and CancelationToken-accepting functions on TaskExecutor (SERVER-52750)
- Remove the interrupt() function from PrimaryOnlyService::Instance and use CancelationToken cancelation to handle interruptions instead (SERVER-52751)
This ticket tracks the first bullet point.