Provide O(1) method for determining if SearchNode has found a feasible solution
Rename private assertion method to be more specific
Add public query-the-result methods
Prevent infinite recursion in ruleOut by only checking edges once

Previously, ruleOut would enforce the edge constraint every time it visited a
node whose color was known (domain[v].cardinality() == 1). Now it only enforces
the constraint the first time the node's color becomes decided (i.e.,
cardinality drops to to 1).
Finish drafting branch-and-bound optimizing search engine