When you build a macOS binary with -no_uuid, we get a binary blob of all 0's from the file, and we read that in with UUID::fromOptionalData, so we get an invalid UUID. When debugserver tells us about the binaries that have been loaded, it returns a UUID string of all 0's. We need these two to match. If we use SetFromStringRef in the latter case, we end up with a valid UUID of all 0's, so they don't match.
This patch adds SetFromOptionalStringRef to mirror the from...Bytes API's, and use it in the macOS Dynamic loader.
I added tests in UUIDTests.cpp to ensure this behavior.