loc: drop tuple line_pos in favour of explicit fields
Loc.make and Loc.set_first/set_last previously took a (line_num,
byte_pos) tuple. Replace with four explicit labelled args
(first_line_num, first_line_byte, last_line_num, last_line_byte) so
call sites are self-documenting and harder to swap by mistake.
Likewise expose first_line_num / first_line_byte (etc.) accessors
instead of first_line / last_line returning the tuple.
Also rename Error.msgf to Error.failf to match the convention of
"raise" being implicit in the action verb (failf raises immediately;
msgf was historically a "wrap and raise" combinator that has the
same behaviour).
ocaml-csvt is the only in-repo consumer that still used the tuple
form; adapt csvt.ml to the new signature and the failf rename.