operationcaller: decide to call an operation directly if the processor has the same thread than the caller

This patch is an alternative, less intrusive implementation for the problem of dd5ca75a5c2c2a1c0f0627b1c4eae282a7761894.
foo.send() will process the operation foo synchronously (in the thread of the caller) if
- the operation foo is a ClientThread operation or
- the processor engine of foo is known and
  - the processor engine is the same as the caller engine or
  - the sending thread is the same than the thread of the processor engine

To make this work, a SlaveActivity that has no master should not return the MainThread instance as its thread.
This was the default return value of SlaveActivity::thread() if no master is set. Actually we do not know who will
call execute() in this case. To be sure, OwnThread operations of components running in a SlaveActivity without a
known master will always be sent, which means that they are executed during the next step, even if the executor
could be the same thread than the sender.

Signed-off-by: Johannes Meyer <johannes@intermodalics.eu>
scripting: disable events in StateMachine::deactivate() and add mutex protection to StateMachine::activate()

Signed-off-by: Johannes Meyer <johannes@intermodalics.eu>