Target-extension types represent types that need to be preserved through
optimization, but otherwise are not introspectable by target-independent
optimizations. This patch doesn't add any uses of these types by an existing
backend, it only provides basic infrastructure such that these types would work
correctly.
RFC: https://discourse.llvm.org/t/rfc-adding-opaque-types-to-llvm-ir/65326
nit: You need moar ^