Implement "trivially relocatable" traits and algorithms.
This implements the library behavior proposed in P1144R3. This patch doesn't do any special optimizations (e.g. to std::vector::reserve) nor add warrants to libc++ class types; those will come later. This is just the bare minimum to conform to P1144's additions to the standard.
We mangle relocate_at into __libcpp_relocate_at, and so on, in order to discourage users from using them. (The intent is that libc++ itself will be able to use them to enable optimizations. Such optimizations are the point of part 3/3, which is not uploaded yet.)
D50119 adds __has_extension(__is_trivially_relocatable) to the compiler.
- any reason to gate the new names on any particular _LIBCPP_STD_VER, such as 17? (I think not.)
- do the tests pass with a compiler that doesn't support __has_extension(__is_trivially_relocatable)? how best to structure the tests so as not to break this?