Properly require Control _and_ Shift modifier being set.

The code used to check whether any of Control or Shift modifier was set.
Optimize the ConnectionModel a bit, esp. for multi-threaded apps.

Do as much work as possible in the background thread and send the
interpreted data to the main thread and add it to the model there.

Also limit the scope of the object lock some more.
Reuse existing method.