Restructure code; Cleanup; Use more lenses

This is a big restructure. The modifier class has been removed, and
replaced by instances of Contains and Ixed. The Sequential and Parallel
modifiers are no longer needed, as modifiers contain the children
theirselves. The Combining modifier has been renamed to Combine and now
combines multiple modifiers, which it contains as children.
The usage of UndecidableInstances is avoided where possible.