### Godot version

4.0.3

### System information

Windows 10

### Issue description

When loading files from a `pck` generated by Godot, file paths must match the exact string path that they were packed in.

Usually when loading files using `FileAccess`, redundant `/`s will be handled correctly. For example, `res://my//path////here` will resolve to `res://my/path/here`. This is not true for `pck`s.

---

Assuming the default `icon.svg` file has been moved into a new directory at `res://assets/`

```gdscript
# This is valid
FileAccess.open("res://assets/icon.svg", FileAccess.READ)
# This is also valid
FileAccess.open("res://assets//////icon.svg", FileAccess.READ)
```

When loading from a `pck`, the path must match exactly.

```gdscript
var packer := PCKPacker.new()
packer.pck_start("res://test.pck")
packer.add_file("res://my//path/icon.svg", "res://assets/icon.svg")
packer.flush()

ProjectSettings.load_resource_pack("res://test.pck")

# This is valid
FileAccess.open("res://my//path/icon.svg", FileAccess.READ)

# This is not valid
FileAccess.open("res://my/path/icon.svg", FileAccess.READ)
# This is also not valid
FileAccess.open("res://my//path/////icon.svg", FileAccess.READ)
```

### Steps to reproduce

Create a `pck` file and start adding files.

Load the `pck` and try to access files with redundant `/`s (or with the correct number of `/`s, if the files were added with redundant `/`s).

### Minimal reproduction project

Available as a repo here: https://github.com/you-win/pck-loading-inconsistency

Available as a zip:
[pck_loading_inconsistency.zip](https://github.com/godotengine/godot/files/11525206/pck_loading_inconsistency.zip)

}
		fhead->store_64(files[i].ofs);
		fhead->store_64(files[i].size); 
		fhead->store_buffer(files[i].md5.ptr(), 16); 
		uint32_t flags = 0;
		if (files[i].encrypted) {
			flags |= PACK_FILE_ENCRYPTED;
		}
		fhead->store_32(flags);
	}
	if (fae.is_valid()) {
		fhead.unref();
		fae.unref();
	}
	int header_padding = _get_pad(alignment, file->get_position());
	for (int i = 0; i < header_padding; i++) {
		file->store_8(Math::rand() % 256);
	}
	int64_t file_base = file->get_position();
	file->seek(file_base_ofs);
	file->store_64(file_base); 
	file->seek(file_base);
	const uint32_t buf_max = 65536;
	uint8_t *buf = memnew_arr(uint8_t, buf_max);
	int count = 0;
	for (int i = 0; i < files.size(); i++) {
		Ref<FileAccess> src = FileAccess::open(files[i].src_path, FileAccess::READ);
		uint64_t to_write = files[i].size;
		Ref<FileAccess> ftmp = file;
		if (files[i].encrypted) {