* separating basic and extended saturation state writers: the basic can
only invoke conclusion visitors, the extended one can also create
contexts
* separating forward and backward decomposition visitors: the former
uses the extended writer and can create new contexts, the latter (which
is used for desaturation and cleaning) uses the basic writer
* refactoring rule application engines to use proper writers
* adding an interface for the writer
* moving the decomposition visitors to the rules package