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

## Environment
**Liquibase Version**: 4.0.0

## Description
I am getting an NPE when I create a new FileSystemResourceAccessor(rootPath), with the following stack trace:

```
java.lang.NullPointerException
        at liquibase.Scope.getLog(Scope.java:278)
        at liquibase.resource.FileSystemResourceAccessor.addRootPath(FileSystemResourceAccessor.java:54)
        at liquibase.resource.FileSystemResourceAccessor.<init>(FileSystemResourceAccessor.java:36)
```

Looking at the Liquibase code, I see that SmartMap#get defines its result as a nullable, however, the Scope class does not check for null in this and other places.

## Steps To Reproduce
I'm running tests in my project, using liquibase-core:
Created this issue for tracking purposes, where you can also find the full stack trace: https://github.com/Treehopper/liquibase-lsp/issues/17

## Additional Context
In my project, I have to run scripts asynchronously. This, and the fact that the problem only occurs occasionally hints at a race-condition.


}
    /**
     * Return the value associated with the given key in this scope or any parent scope.
     * If the value is not defined, the passed defaultValue is returned.
     * The value is converted to the given type if necessary using {@link liquibase.util.ObjectUtil#convert(Object, Class)}.
     */
    public <T> T get(String key, T defaultValue) {
        Class type;
        if (defaultValue == null) {
            type = Object.class;
        } else {
            type = defaultValue.getClass();
        }
        Object value = get(key, type);
        if (value == null) {
            return defaultValue;
        }
        return (T) value;
    }
    /**
     * Looks up the singleton object of the given type. If the singleton has not been created yet, it will be instantiated.
     * The singleton is a singleton based on the root scope and the same object will be returned for all child scopes of the root.
     */
    public <T extends SingletonObject> T getSingleton(Class<T> type) {
        if (getParent() != null) {
            return getParent().getSingleton(type);
        }
        String key = type.getName();
        T singleton = get(key, type);
        if (singleton == null) {