Fix several bugs: 1. https://llvm.org/PR60258 The conversion constructors' constraint `__compatible_with` incorrectly allow array types conversion to scalar types 2. https://llvm.org/PR53368 The constructor that takes `unique_ptr` are not suffiently constrained. 3. The constructors that take raw pointers incorretly use `__compatible_with`. They have different constraints Differential Revision: https://reviews.llvm.org/D143346