Fix schedule._reintroduce_delays() and introduce sfg.insert_operation_before() function
Fixes a problem with the _reintroduce_delays() method which did not work as intended for larger SFGs and improves the algorithm used to simplify the SFG afterwards.
Also adds methods in SFG to insert an operation before a certain operation given a graphID
More tests are added as well