chore: add read_existing_to_string (#7532)
### Description
For parsing `.npmrc` we don't want to error if it isn't there. Using
`read_existing_to_string_or` doesn't feel right to me as it would
require using a magic value to signify none e.g.
`npmrc_path.read_existing_to_string_or(Ok("missing"))?` and then
checking that value.
If nobody objects, I'm happy moving uses of `read_existing_to_string_or`
to `read_existing_to_string` in a future PR.
### Testing Instructions
Existing unit tests, new unit tests
Closes TURBO-2452