Add native support for BFloat16. (#51470)
This PR adds native support for the LLVM `bfloat` type, through a new
`BFloat16` type. It doesn't add any language-level functionality,
only the bare minimum support (e.g. runtime conversion routines).
Use of the BFloat16s.jl package is still required to use BFloat16 values.