feat(pip): support specifying requirements per (os, arch)
This PR implements a better way of specifying the requirements files for different (os, cpu) tuples. It allows for more granular specification than what is available today and allows for future extension to have all of the sources in the select statements in the hub repository.
This is replacing the previous selection of the requirements and there are a
few differences in behaviour that should not be visible to the external user.
Instead of selecting the right file which we should then use to create
whl_library instances we parse all of the provided requirements files and
merge them based on the contents. The merging is done based on the blocks
within the requirement file and this allows the starlark code to understand if
we are working with different versions of the same package on different target
platforms.
Fixes #1868 Work towards #1643, #735