When downloading and running Bitcoin core for the first time, after clicking through the "Are you sure you want to open. it?" screen, there's a possibility that macOS will pass an argument like `-psn_0_SOME_ID` to the application, which results in a shutdown as it's an invalid argument:

![v0 19 0rc1 args shutdown](https://user-images.githubusercontent.com/863730/67034964-b026fc00-f0e6-11e9-8462-70d0fcf613e6.png)

This only happens on the first run, subsequent opens will work fine, but we should filter these out, otherwise it's a poor and confusing first experience.

{
    std::lock_guard<std::mutex> lock(cs_dir_locks);
    dir_locks.erase((directory / lockfile_name).string());
}
void ReleaseDirectoryLocks()
{
    std::lock_guard<std::mutex> ulock(cs_dir_locks);
    dir_locks.clear();
}
bool DirIsWritable(const fs::path& directory)
{
    fs::path tmpFile = directory / fs::unique_path();
    FILE* file = fsbridge::fopen(tmpFile, "a");
    if (!file) return false;
    fclose(file);
    remove(tmpFile);
    return true;
}
bool CheckDiskSpace(const fs::path& dir, uint64_t additional_bytes)