This fixes an issue when changing port-configuration
or toggle strict-i/o of latent multi-out plugins.
`Session::auto_connect_thread_run` can run concurrently
while ports are added/removed from the GUI thread.
The latter invalidates IO::_port PortSet, while
the former thread iterates over ports.
This also changes the IO-Mutex into a RWLock to allow
concurrent access when possible.