[pypi] PEP508 Remove the need for Python in env_marker evaluation in hub repos

Related #2319

This is to add a parser for PEP508 in starlark and to use it in the hub_repository instead of evaluating markers with Python in the module extension evaluation phase.

This will be needed in other places as well:

  • Using the same starlark parser in parsing the METADATA.
  • Parsing uv.lock and other lock files that have the marker as part of their deps.
  • Allowing us to push the env_marker evaluation to the analysis phase together with the other config setting evaluation.
  • Allowing to properly support the full spec of PEP508 in the whl_library without exploding the number of args we need to pass to whl_library.
  • Allowing to create something similar to a whl_archive repository rule that would not depend on Python that we could dog-food ourselves for the repo rules that need Python at the repo phase (i.e. the current whl_library).