Parse version constraints even with groupings in the middle. Fix #1180.

I don't believe any other portion of code should rely on a particular formula structure and so this change is all that is required to parse expressions like `(>= "2.0.0" & < "3.0.0") | (>= "4.0.0" & < "5.0.0")`.