[lldb] Add builtin register type representation (#218725)
This patch introduces `RegisterTypeBuiltin`, an internal representation
of GDB predefined types such as `uint32`, `bool`, `ieee_half`, and
`data_ptr`.
- Store each builtin's encoding, display format, and optional fixed byte
size.
- Use `std::nullopt` for target-dependent types such as pointers.
- Teach `RegisterTypeBuilderClang` to create the corresponding Clang
`CompilerType`.
- Validate that the resulting type exactly matches the register size.
- Do not serialize builtins because GDB defines them implicitly by name.
- Add tests for fixed-size, named, pointer-sized, mismatched, and
non-serialized builtins.
This provides the scalar element types needed to build register vectors
in later patches. It does not parse or display vectors yet.
Co-authored-by: Bar Soloveychik <barsolo@fb.com>