ReusableConstraint
ReusableConstraint wraps a resolved constraint so that it
may be saved and reused as needed.
Construct a ReusableConstraint
Conversion operator from a normal constraint to a ReusableConstraint.
Resolves the ReusableConstraint by returning the constraint
that it originally wrapped.