Add source distribution packaging rules (#9835)

This change adds `rules_pkg`-based targets that will produce source distribution archives, similar to `make dist`.

These rules produce nearly the same outputs as `make dist`. However, there are some differences and caveats:

1. The outputs do not contain vendored googletest sources.
2. You have to run `autogen.sh` before `blaze build pkg:all`. This produces several autotools-related files directly into the source tree.
3. The output .zip files do not have a directory prefix like `protobuf-3.20.1-rc-1` (this will be addressed after [Substitute package variables in `pkg_zip#package_dir`. bazelbuild/rules_pkg#577](https://github.com/bazelbuild/rules_pkg/pull/577); the tar files do have this prefix, though.)
4. One file is missing from the archives, which is produced during the `make` build: benchmarks/gogo/cpp_no_group/cpp_benchmark.cc
5. In several places, I have explicitly excluded some files that are not in the autotools distribution outputs. I think most of those files should probably be included, but for now, I'm aiming for parity with `make dist`. These are marked with comments, so it should be easy to clean them up later.
diff --git a/csharp/BUILD b/csharp/BUILD
new file mode 100644
index 0000000..6d31ba0
--- /dev/null
+++ b/csharp/BUILD
@@ -0,0 +1,34 @@
+# Protobuf C# runtime
+#
+# See also code generation logic under /src/google/protobuf/compiler/csharp.
+
+load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix")
+
+pkg_files(
+    name = "dist_files",
+    srcs = glob([
+        "keys/*",
+        "protos/*",
+        "src/**/*.cs*",  # .cs and .csproj
+    ]) + [
+        ".editorconfig",
+        ".gitignore",
+        "BUILD",
+        "CHANGES.txt",
+        "Google.Protobuf.Tools.nuspec",
+        "Google.Protobuf.Tools.targets",
+        "NuGet.Config",
+        "README.md",
+        "build_packages.bat",
+        "build_tools.sh",
+        "buildall.bat",
+        "buildall.sh",
+        "generate_protos.sh",
+        "install_dotnet_sdk.ps1",
+        "src/Google.Protobuf.Benchmarks/wrapper_benchmark_messages.proto",
+        "src/Google.Protobuf.Test/testprotos.pb",
+        "src/Google.Protobuf.sln",
+    ],
+    strip_prefix = strip_prefix.from_root(""),
+    visibility = ["//pkg:__pkg__"],
+)