Extracted from D3830.
This changes ParamNode to use UTF8 values internally.
XMB files are UTF8 since rP15309. This removes the need for a lot of conversions, speeding things up and allows cleaning up the validator interface & a few other callsites.
ConstructJSVal could technically be a bit slower becase of UTF8->16 conversions in SpiderMonkey, but given it copies the string anyways & we're mostly using ascii still, I doubt it makes a massive difference.
Changes ToXML to ToXMLString for clarity.
Add a simple "op" test & show a particular behaviour of merge nodes that I intend to change somewhat in D3830.
The precompiled tweak decouples Component.h & ScriptComponent.h, which is good because the latter uses ParamNode so this speeds up incremental recompilation. I think overall compilation times might be improved in a non-visible way.