Download source code

If we commit a timeline while splitting clips we might end up commiting
"half splited" clips. This happens because while splitting, the keyframe
are moved and `KeyframeCurve.__controlSourceChangedCb` is called.
Introduce a context manager on the pipeline so that we ensure that
a section of code is commited atomically.
Fixes #2251