Addresses use cases in Clang/MLIR that need pointer-to-pointer, reference-to-reference, and value-to-value casts from/to the same types. This should reduce boilerplate by allowing the user to simply specify the pointer cast and forward the reference cast directly to the pointer cast.
This cast trait DOES NOT implement castFailed and doCastIfPossible because in the general case doing so could result in a nullptr dereference. Users can use NullableValueCastFailed and DefaultDoCastIfPossible as desired for those cases where nullptr is acceptable.