<!--- This environment context section helps us quickly review your PR. 
      Please take a minute to fill-out this information. -->
## Environment

**Liquibase Version**: 4.4.0

**Liquibase Integration & Version**: Maven

**Liquibase Extension(s) & Version**: None

**Database Vendor & Version**: All

**Operating System Type & Version**: Any


## Description

I am using XML changelog with <includeAll> for which path is mandatory in a zip file

```
<includeAll path="" relativeToChangelogFile="true" filter="my.XMLFilter"/>
```

I want to include all files in the directory of the changelog.
1. `<includeAll path="">` => Not working, is resolved to root of the zip archive
2. `<includeAll path=".">` => Not working, path is not normalized and ZipFileSystem does not resolve `myfolder/./` as `myfolder/`

## Steps To Reproduce

PR with unit Test to come...

## Actual Behavior
First case run into stack overflow
Second case does not find any file


## Expected/Desired Behavior
Expected behavior is to have the same behavior as regular file system


## Additional Context
Resolution can be to modify liquibase.resource.FileSystemResourceAccessor lines 237 - 239:

From 
```
                    if (path != null) {
                        basePath = basePath.resolve(path);
                    }
```
To
```
                    if (StringUtil.isNotEmpty(path)) {
                        basePath = basePath.resolve(path).normalize();
                    }
```





finalPath = Paths.get(finalPath.replaceFirst("^/", "")).normalize().toString().replace("\\", "/");
                ZipEntry entry = zipFile.getEntry(finalPath);
                if (entry != null) {
                    
                    stream = new CloseChildWillCloseParentStream(zipFile.getInputStream(entry), zipFile);
                    streamURI = URI.create(rootPath.normalize().toUri() + "!" + entry.toString());
                } else {
                    zipFile.close();
                }
            } else {
                Path finalRootPath = rootPath;
                if (relativeTo != null) {
                    finalRootPath = finalRootPath.resolve(relativeTo);
                    File rootPathFile = finalRootPath.toFile();
                    if (rootPathFile.exists()) {
                        if (rootPathFile.isFile()) {
                            
                            finalRootPath = rootPathFile.getParentFile().toPath();
                        }
                    } else {
                        Scope.getCurrentScope().getLog(getClass()).fine("No relative path " + relativeTo + " in " + rootPath);
                        continue;
                    }
                }
                try {
                    if (Paths.get(streamPath).startsWith(finalRootPath) || Paths.get(streamPath).startsWith("/" + finalRootPath)) {
                        streamPath = finalRootPath.relativize(Paths.get(streamPath)).toString();
                    }
                    if (Paths.get("/" + streamPath).startsWith(finalRootPath)) {
                        streamPath = finalRootPath.relativize(Paths.get("/" + streamPath)).toString();