Turbopack: Split the read and write codepath data structures for symlinks (#97395)
Another attempt at cleanup, similar to
https://github.com/vercel/next.js/pull/96955.
We need different information to write symlinks or junction points (most
notably, if it's a directory or not) than we get when reading symlinks.
We were trying to use the same data structure for both, but this lead us
to always call `get_type()` as part of reading a link, which was just
silly.
This also meant that `write_link` had to handle `NotFound` and
`Invalid`. `NotFound` is somewhat reasonable (just delete the file), but
`Invalid` is awkward.