merged_tree: make TreeDiffDirItem not self-referential
This removes another dependency on `ouroboros`, for a small
performance hit:
```
❯ hyperfine --warmup 3 --runs 30 \
'/tmp/jj-before --ignore-working-copy diff -s --from v5.0 --to v6.0' \
'/tmp/jj-after --ignore-working-copy diff -s --from v5.0 --to v6.0'
Benchmark 1: /tmp/jj-before --ignore-working-copy diff -s --from v5.0 --to v6.0
Time (mean ± σ): 689.7 ms ± 23.9 ms [User: 400.0 ms, System: 289.8 ms]
Range (min … max): 666.9 ms … 759.2 ms 30 runs
Benchmark 2: /tmp/jj-after --ignore-working-copy diff -s --from v5.0 --to v6.0
Time (mean ± σ): 710.9 ms ± 19.2 ms [User: 420.4 ms, System: 290.6 ms]
Range (min … max): 688.5 ms … 752.0 ms 30 runs
Summary
'/tmp/jj-before --ignore-working-copy diff -s --from v5.0 --to v6.0' ran
1.03 ± 0.05 times faster than '/tmp/jj-after --ignore-working-copy diff -s --from v5.0 --to v6.0'
```
authored by