rego: add Data_error variant with semantic loc, drop raw Json.Error.t leak
Per the ocaml-encodings skill, consumer libraries should not expose
raw Json.Error.t in their public error type. [Data_error] carries a
plain string reason and an optional string loc, extracted from
Json.Error.t at the boundary via [data_error_of_json_error].