Qualifiers

An experimental feature for associating assumptions with expressions. Adds a new "Qualified" type which wraps an algebraic or boolean expression and throws a contradiction exception if the assumptions ever become false.
How this is related to this pr?