The option parser currently does not properly handle nested options, meaning that
in some cases we can print pass pipelines that we can't actually parse back in. For example,
from #52885 we currently can't parse in inliner pipelines that have nested pipeline strings.
This commit adds handling for string values (e.g. "...") and nested options
(e.g. foo{baz{bar=10 pizza=11}}).
Fixes #52885
This is different than most of the stringref manipulating ones - in this case you might get a std::pair<std::pair<StringRef, StringRef>, StringRef> and have the string updated that way. I think the majority returns the remainder again rather than ref param.