Port changes from 2.x to fix some project warnings in master branch:
* Copy phase strip warning on binaries when building Distribution
* No app category set on Autoupdate
* -Watimport-in-framework-header warnings
* id messaging warnings
* -Wcompletion-handler warnings
* Some deprecated base64 APIs
* Explicit SDK and adhoc signing identity
* Upgrade project last update check
* Don't use manual ordering for building targets and set Sparkle.framework as dependency to XCFrameworks aggregate target
* Silenced WKWebView deprecation warning
* Fixed no output node warning in git config script by removing input node like in 2.x
• In ConfigCommon.xcconfig, removed references to CLANG_WARN_OBJC_RECEIVER_WEAK and -Wno-receiver-is-weak, because apparently these had been deprecated and are now no longer recognized.
• In SUAppcast.m, changed to method which can accept nil.
• In SUOperatingSystem.h, added a check for nil which probably never happens.
• In SUUpdateAlert.m, swapped receiver with parameter in -isEqualToString, 3 places, so that nonnull parameter could never be nil.
• In SUUpdater.m, added NSLocalizedString() wrappers around 8 recently-added (in the last few years, I think) user-facing warning strings.
This changes the way we authorize & execute commands, and how we wait for their completion. In order to obtain the correct child to wait (instead of another one terminating intermediately), we use a wrapper tool (fileop) to output its pid onto the communication pipe that we read from the other end.