new test function CheckForConnectedSubgraph() and bigger rewrite of PowerSetGenerator() and SPFragmentGenerator() to allow for ings
CheckForConnectedSubgraph(): Is an O(N2) function to check whether we do not create fragments we don't want to have (i.e. disconnected ones)
PowerSetGenerator(): Instead of adding the possible Walkers to an AtomStack, we use the bonds we store in the BondsPerSPList, which by the way have the necessary directional information (i.e. they come with the predecessor in Bond#leftatom). This way, we generate fragments in ring structures without any problems.
SPFragmentGenerator(): had to be adapted as the calling in PowerSetGenerator() had changed a bit. We already let the root be added by this function and don't add it in PowerSetGenerator(), which simplifies (no if-catch for first order) the code there a bit. Furthermore, we had to check whether an added vertex was not already in the keyset (this may happen, as both edge 1<->2 as 2<->1 may appear at different SPLevels in BondsPerSPLevel: Ring structures in contrast to tree structures don not allow for uniqueness! This is first realised through the hash map storing the keysets). This again caused a change in recognizing when the stack contains a fragment, as Suborder-bits (bits is the number of atoms added for this combination) is not the way anymore - we use an additional Counter "Added".
Test on Benzonitrile was successful. We counted the possible fragments by hand, checked them furthermore till order 5 and the numbers were ok up till full order 8 in the end.