revert: upgrade to protobuf 27.0 and remove py_proto_library (#1933) (#1948)

This reverts commit d0e25cfb41446e481da6e85f04ad0ac5bcf7ea80.

We have the following concerns with the associated change:

- `sphinxdocs` is excluded entirely. Because protobuf fails to compile?
  But why? Protos are needed as part of our docgen, but it is unclear
  how the docgen is still working. Maybe we can get some clarification
  here?
- The `py_proto_library` tests in the `bzlmod` example are excluded from
  CI. Because protos also fail to compile? But why? It's an example and
  should Just Work.
- Adding the `copts` needs to be done by all downstream users now. But
  fixing that in protobuf blocks removing legacy struct providers? I
  don't understand the connection.

Also @alexeagle noted extra

[regression](https://github.com/bazelbuild/rules_python/pull/1933#issuecomment-2155523751)
being caused by the associated PR.

Reverting in order to unblock a new release of `rules_python` and then
we can work together with @comius on reverting the revert.

Reverts https://github.com/bazelbuild/rules_python/pull/1933
diff --git a/python/proto.bzl b/python/proto.bzl
index 2ea9bdb..3f455ae 100644
--- a/python/proto.bzl
+++ b/python/proto.bzl
@@ -11,11 +11,11 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+
 """
 Python proto library.
 """
 
-load("@com_google_protobuf//bazel:py_proto_library.bzl", _py_proto_library = "py_proto_library")
+load("//python/private/proto:py_proto_library.bzl", _py_proto_library = "py_proto_library")
 
-def py_proto_library(*, deprecation = "Use py_proto_library from protobuf repository", **kwargs):
-    _py_proto_library(deprecation = deprecation, **kwargs)
+py_proto_library = _py_proto_library