[Reflection] Fix premature deallocation of string memory in buildContextDescriptor.
This function demangles a std::string, but the demangler can create interior pointers into the string being demangled. Solve this by copying the string into the Demangler first.
readMangledName does the same thing. Consolidate the string copying code into a method on NodeFactory, then make both functions use it.
rdar://102275748