Refactor the control port client implementation
The current control port implementation lives in Torbutton.
For #40938 (closed), we want to better integrate it with the rest of our patchset.
Also, we want to modernize it and remove some overengineered mechanisms (such as the dispatchers).