xmlt: Path/Sort context threading and location capture
Adds structural Path/Context to every decode error:
- XML Sort.t enum: Element / Attribute / Text / Document, exposed in
xmlt.mli with kinded / or_kind helpers.
- Decode descent points wrap inner decoding with try/with that pushes
a context frame (Textloc.Error.push_object or push_array) before
re-raising:
* dec_stream_attrs: pushes (element_kind, attr_name) for each Attr
/ Attr_opt decode.
* dec_stream_children: pushes (element_kind, child_tag) for Child
and Child_opt, and (list_kind, idx) for Children.
* dec_stream_list: pushes (list_kind, idx) for each list item.
- dec_stream now captures the parser's start-of-value location for
Text_map and Map decodes; if the inner decoder raises with no meta,
the caught error is re-raised with the captured location attached.
This keeps the 'line N' info in errors that come from user-supplied
base_dec / map_dec functions.
- dec_stream_el now takes the element's tag so attribute and child
decoding can build the correct kinded-sort frame.
12 new tests cover: bad child element, bad attribute, missing
attribute, list-item error, list first-item edge case, Children
field, 3-level nesting, child_opt with bad contents, list of records
with an attr failure, line preservation with non-empty context, and
two structural assertions against Textloc.Error.t (kinds + path
indices).
All 177 tests pass.