Add variables to existing set

This replaces the recursive creation of variable
sets. In this way the number of copying operations
is reduced significantly. Moreover, the dynamic
memory allocation without free'ing is removed.
Add dual clauses and atomics to lists; do not copy

These were causing stack overflows.
Optimisations in Constraint creation
Revert "This should be contained in "llvm-config --cxxflags" if needed."

This reverts commit 5e56bedd266e41f5b9afd918aefbf14e0cccb36e.