Route TreeBuilder.insert through pgit_borrow_gitpath (like get/remove)
so all three agree on UTF-8 encoding, raw bytes input, and NFC
normalization on macOS. Previously insert used the strict "s" format
while get/remove used pgit_borrow_gitpath, so on macOS an entry inserted
with an NFD name could not be found afterwards.
Also switch tree lookups (Tree.__contains__, Tree.__getitem__ and
Tree.__truediv__, all via tree_getentry_by_path) from
pgit_borrow_fsdefault to pgit_borrow_gitpath, matching the treebuilder.
Add regression tests covering NFC, NFD and raw bytes names.
Assisted-by: Kimi Code
Encode repository-internal paths as UTF-8 instead of filesystem encoding, and normalize to NFC on macOS to match Git's core.precomposeunicode default. status_file now also accepts raw bytes.
Add regression tests covering non-ASCII, non-breaking space, NFC/NFD, and raw bytes paths.
Related to #687
Assisted-by: Kimi Code