gui stream: respect the user's wish when the repetition changes completely

if repetition is completely changed, adapt the ROI so that the area is identical, but the reptition is respected.

This allows the least surprise when completely changing the repetition and have the behaviour
not too diferent from changing twice the repetition (though not identical :-( )
gui stream: add test for SEM/AR sync acquisition

automatically setup a simulator for the tests
Background Substraction
Background Substraction testing
Precomputed output
Minor change
model dataflow: subscribe/unsubscribe cannot be oneway

it makes the call faster, but can also mess up with the semantic because
Pyro doesn't ensure that multiple calls are received in order.

Probably this is what is causing a bug noticed during synchronised
acquisition.
Merge remote-tracking branch 'origin/kimon-UpdatedPolarView'
Merge branch 'master' of vpn.delmic.com:odemis
semcomedi: fix race condition when starting acquisition immediately after stopping it

The code would test wrongly for the thread to still be active and give up if it is.
However, if the acquisition has just finished, in some case the thread might still be up.
It will die very soon.
This is handled by _wait_acquisition_stopped() anyway, so trust it.
gui stream: test SEM/CCD acquisition

after various fixes, seems to work fine
util: improve and clean up RepeatingTimer

add logging in case of exception in the thread
driver: add .softwareTrigger event

Special event that is now required on all components which have a synchronisable dataflow.

Although not purely required, this avoids the frontends to have to provide an Event whenever they need
to do software trigger.
Typically useful for when wanting to do multiple acquisitions at software-decided moments.

Will be used in SEM/CCD acquisition
gui stream: use softwareTrigger instead of our own Event

much cleaner and simpler (should be the exact same speed)