This unblocks nanopb changes proposed in #4264.
This upgrades everything in the gRPC constellation of dependencies to match gRPC at 1.28:
* gRPC to 1.28.0 (note that gRPC 1.28.1, while released, is a fix for just the python binding and there's no gRPC-C++ CocoaPod at that version)
* Abseil to 20200225 (as of gRPC 1.27 this is now a gRPC dependency too; there's a later patch but gRPC doesn't use it yet)
* Protobuf C++ to 3.11.4 (only used for testing in Firestore)
* C-Ares to 1.15.0
* BoringSSL to match (no change between gRPC 1.27.0 and 1.28.0)
Also, this disables CFStream-based transport on Apple platforms. This works around b/133182964, wherein CFStream will occasionally fail to raise a has-bytes-available events, causing Firestore to appear to hang.
* Upgrade gRPC to 1.24.3
* Upgrade C++ Protobuf to 3.9.2
Disable -Wunreachable-code in protobuf-generated code
* Regenerate C++ protos with protobuf 3.9.2
* Generate objc protos with Protobuf 3.9.2
* Rename IN to IN_ for compatibility with Windows
windows.h defines IN and INOUT macros that indicate the directionality
of parameters in the Windows API.
* Rename DeleteFile to DeleteSingleFile
This avoids a conflict with the Win32 macro, which expands to either
DeleteFileA or DeleteFileW, based on the Unicode mode of the build.
* Avoid using declarations of non-types outside classes
VS2017 doesn't accept these even though clang does.
* Avoid relying on default construction of type traits
This is a C++14 extension that VS2017 does not expose in C++11 mode.
* Add missing dependencies
* Define LevelDbPersistence::AppDataDirectory on Windows.
* Make Container a top-level type
This avoids a GCC error:
error: typedef ‘using value_type = int’ locally defined but not used [-Werror=unused-local-typedefs]
Removing value_type isn't actually possible because it is actually used,
but indirectly via template.
* Use python executable directly
* python2 is not guaranteed to exist
* scripts aren't directly executable on Windows
* Add Firestore v1 protos
* Point cmake at Firestore v1 protos
* Regenerate protobuf-related sources
* Make local protos refer to v1 protos
* fixup! Regenerate protobuf-related sources
* Remove v1beta1 protos
* s/v1beta1/v1/g in source.
* s/v1beta1/v1/ in the Xcode project
* Remove stale bug comments.
This was fixed by adding an explicit FieldPath API rather than exposing
escaping to the end user.