[libc][bazel] Support generating public libc headers in Bazel builds. (#145381)
Running `hdrgen` in Bazel hermetically requires adding a new dependency
on PyYAML. This PR uses PyYAML version 5.1 due to keep in line with the
docs:
https://github.com/llvm/llvm-project/blob/b878e0d11874a898bbaa1daf58007dfd232005f2/libc/docs/dev/header_generation.rst?plain=1#L22
See https://github.com/llvm/llvm-project/issues/134780.
Generated headers are placed in a `staging/` directory so that they have
the opportunity to be treated differently from non-generated headers.
This is a follow-up to https://github.com/llvm/llvm-project/pull/141256,
which was reverted in https://github.com/llvm/llvm-project/pull/143001
because it caused downstream failures when bootstrapping builds.