PN-Synthesis: Implement T-Net synthesis

Signed-off-by: Uli Schlachter <uli.schlachter@informatik.uni-oldenburg.de>
Synthesize: Make TNet require plainness

The implementation of TNet already assumed plainness, but this requirement
wasn't enforced in the code before.

Signed-off-by: Uli Schlachter <uli.schlachter@informatik.uni-oldenburg.de>
Synthesize: Make TNet require pureness

An impure TNet has a place as a side-condition of a transition. Such a place
cannot be connected to anything else but this transition, thanks to the TNet
property. Also, this must be a side-condition with weight one due to the
TNet-property as well. So this place never changes its marking and is redundant.

Signed-off-by: Uli Schlachter <uli.schlachter@informatik.uni-oldenburg.de>
Synthesize: Fix the combination impure + plain

When adding side-conditions to a place, this side-condition could violate the
plainness requirement. Fix this by checking for this case before adding the
required side-condition.

If this check fails, we know that the generated region would not be plain.
However, we cannot be sure that no plain region exists that solves the given
separation problem...

Signed-off-by: Uli Schlachter <uli.schlachter@informatik.uni-oldenburg.de>