feat: use rules_python implemented py_runtime, py_runtime_pair, PyRuntimeInfo (#1574)

This switches over to using the rules_python implementation of
`py_runtime`,
`py_runtime_pair`, and `PyRuntimeInfo` for Bazel 6 and higher. Bazel 5
lacks features
(specifically provider ctors) to allow enabling it on that version.

This is possible because the rules don't directly use the PyRuntimeInfo
provider
(mostly, see below), they only care about the structure of it as exposed
from the
ToolchainInfo provider.

Switching the toolchain providers and rules over early allows some
development of
the toolchain prior to Bazel 7 and the rest of the rules_python Starlark
implementation
being enabled.

The builtin PyRuntimeInfo is still returned and accepted for two
reasons:
* Better compatibility with the builtin rules to make transitioning
easier
* `py_binary` has an old, possibly defunct (not sure) code path that
will look up the
  the PyRuntimeInfo from a flag/implicit attribute.
diff --git a/python/py_runtime_info.bzl b/python/py_runtime_info.bzl
index 699b31d..c0a9288 100644
--- a/python/py_runtime_info.bzl
+++ b/python/py_runtime_info.bzl
@@ -14,8 +14,8 @@
 
 """Public entry point for PyRuntimeInfo."""
 
-load("@rules_python_internal//:rules_python_config.bzl", "config")
-load("//python/private:reexports.bzl", "internal_PyRuntimeInfo")
+load("//python/private:reexports.bzl", "BuiltinPyRuntimeInfo")
+load("//python/private:util.bzl", "IS_BAZEL_6_OR_HIGHER")
 load("//python/private/common:providers.bzl", _starlark_PyRuntimeInfo = "PyRuntimeInfo")
 
-PyRuntimeInfo = _starlark_PyRuntimeInfo if config.enable_pystar else internal_PyRuntimeInfo
+PyRuntimeInfo = _starlark_PyRuntimeInfo if IS_BAZEL_6_OR_HIGHER else BuiltinPyRuntimeInfo