CIF/BDD: Add data-based synthesis setting for cleaning up CIF/BDD edges
`CifDataSynthesis#synthesize` internally calls `edge.initApply()` and `edge.cleanupApply()` for every `edge` in the CIF/BDD specification, right before and after synthesis, respectively. This frees up the edge guard/update/... BDDs. Also the initial predicate BDDs in the CIF/BDD spec are freed. Therefore the CIF/BDD spec that's given to `synthesize` can't be used afterwards anymore for any other purposes. It would be convenient if `CifDataSynthesisSettings` would allow configuring to what extent BDDs should be freed by data-based synthesis.
issue