Some members of CompilerInvocation store StringRefs pointing to the command line arguments.
When round-tripping, those StringRefs will reference strings we generated ourselves. To ensure they live long enough, this patch creates a string storage inside CompilerInvocation itself.
To prevent iterator invalidation, std::forward_list was used.
clang-format not found in user's PATH; not linting file.