ocaml-rego: more OPA conformance fixes
Parser:
- assign IN explicit precedence (between AMPERSAND and EQEQ) so
arithmetic/relational operators bind tighter than membership; this
drops the 32 shift/reduce conflicts the IN production used to cause.
- accept patterns (not just identifiers) on the value/key positions of
[some ... in ...], so [some "foo" in [...]] and [some {"a": x} in
data.array] parse against the [SomeIn] AST shape.
- add a [ref_brack_head] alternative for the legacy [p[100]] body-less
partial-set form.
Evaluator:
- [eval_some_in] uses [bind_value_pattern] so [some] handles literal
patterns, array/object destructuring, and bound vars.
- [object.get] with an [Array] path walks nested objects/arrays and
returns the default when any segment is missing; non-object subjects
now error.
- glob.match recognises [{a,b,...}] alternation and [[!...]] negated
classes; default delimiter is [.] (matching gobwas/glob), and an
empty array is treated like the default.
- regex.* switched to the Re.Pcre flavour so backslash escapes ([\[],
[\d], etc.) match Go's regexp; regex.replace now substitutes [$N]
group references.