### 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)

uint32_t h = hash_murmur3_one_32(p_val.a);
			return hash_fmix32(hash_murmur3_one_32(p_val.b, h));
		}
		PathMD5() {}
		explicit PathMD5(const Vector<uint8_t> &p_buf) {
			a = *((uint64_t *)&p_buf[0]);
			b = *((uint64_t *)&p_buf[8]);
		}
	};
	HashMap<PathMD5, PackedFile, PathMD5> files;
	Vector<PackSource *> sources;
	PackedDir *root = nullptr;
	static PackedData *singleton;
	bool disabled = false;
	void _free_packed_dirs(PackedDir *p_dir);
public:
	void add_pack_source(PackSource *p_source);
	void add_path(const String &p_pkg_path, const String &p_path, uint64_t p_ofs, uint64_t p_size, const uint8_t *p_md5, PackSource *p_src, bool p_replace_files, bool p_encrypted = false); 
	void set_disabled(bool p_disabled) { disabled = p_disabled; }
	_FORCE_INLINE_ bool is_disabled() const { return disabled; }
	static PackedData *get_singleton() { return singleton; }
	Error add_pack(const String &p_path, bool p_replace_files, uint64_t p_offset);
	_FORCE_INLINE_ Ref<FileAccess> try_open_path(const String &p_path);
	_FORCE_INLINE_ bool has_path(const String &p_path);
	_FORCE_INLINE_ Ref<DirAccess> try_open_directory(const String &p_path);
	_FORCE_INLINE_ bool has_directory(const String &p_path);
	PackedData();
	~PackedData();
};
class PackSource {