<!--- 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();
                    }
```





if (isRelativePath) {
            
            String tempFile = FilenameUtils.concat(FilenameUtils.getFullPath(relativeBaseFileName), fileName);
            if (tempFile != null && new File(tempFile).exists() == true) {
                fileName = tempFile;
            } else {
                fileName = FilenameUtils.getFullPath(relativeBaseFileName) + fileName;
            }
        }
        fileName = fileName.replaceFirst("classpath:", "");
        DatabaseChangeLog changeLog;
        try {
            DatabaseChangeLog rootChangeLog = ROOT_CHANGE_LOG.get();
            if (rootChangeLog == null) {
                ROOT_CHANGE_LOG.set(this);
            }
            DatabaseChangeLog parentChangeLog = PARENT_CHANGE_LOG.get();
            PARENT_CHANGE_LOG.set(this);
            try {
                ChangeLogParser parser = ChangeLogParserFactory.getInstance().getParser(fileName, resourceAccessor);
                changeLog = parser.parse(fileName, changeLogParameters, resourceAccessor);
                changeLog.setIncludeContexts(includeContexts);
                changeLog.setIncludeLabels(labelExpression);
                changeLog.setIncludeIgnore(ignore != null ? ignore.booleanValue() : false);
            } finally {
                if (rootChangeLog == null) {
                    ROOT_CHANGE_LOG.remove();
                }
                if (parentChangeLog == null) {
                    PARENT_CHANGE_LOG.remove();