port(turborepo): Cache Item (#4575)
### Description
Ports cache item to Rust. Does not hook up the code to anything yet.
### Reviewer Guide
~~This PR is still being cleaned up, so bear with me. Currently the
functionality is all there and the restore tests are ported. I'm working
on porting the check_name tests and so on.~~ PR is ready to go with all
tests ported. Currently working on a stacked PR that hooks up cache item
to HTTP cache
The main code to review is `turborepo-cache/src/cache-archive`, which is
the ported cache item code. The code should be a 1-1 match with the Go
code, with the same file names and function names.
~~I did *not* port the `cachedDirTree` struct as it was a little
confusing and not very idiomatic in Rust. I'll explore a more idiomatic
way of memoizing the lookups after this is completed.~~ Cached dir tree
is ported
### Testing Instructions
Ports restore_test.go, which includes fairly comprehensive tests on
restoration and symlinks.
---------
Co-authored-by: --global <Nicholas Yang>