Do this by making opaque pointers a valid pointer element type, for which we implicitly create an opaque pointer (moving the logic from getPointerTo into PointerType::get).
We'll never create something like a "pointer to opaque pointer", but accept it in the API, because a lot of code reasonably assumes that you can create a pointer to pointer type.