With this PR I'm proposing we stop treating Univalue like a subtree, or upstream project/fork, and going forward, treat it as part of this codebase, which we can refactor directly (with pulls to this repo. Ideally, after this is merged, our univalue subtree repo could be marked as "archived". In this repo, I think there is a good chance that the Univalue code will ultimately be refactored away into "modern" C++, i.e using std::variant (at least one person has played around with doing this).
Backport of core#25369.
Depends on D16274.
For ease of review, only changes similar to the source material are included. However more changes will be added in follow-ups such as autotools removal and clang-format linting of the files.