Replace the boolean parameters for including user metadata and evaluating conditions with MergeMode and EvalMode enums.
The C++ and Python wrappers still use booleans because they're more constrained than enums in those languages, which can be given invalid values.
Use the game names rather than their acronyms (aside from suffixes, which are widely used).
This also changes the CXX wrapper to use PascalCase for the game types it exposes for consistency. The outer C++ wrapper is unchanged.
A few lints are commented out because they seem like good ideas but
fixing the errors they cause would cause too much churn for it to be
done in this commit.
The unreachable_pub lint is commented out because it seems like a good
idea but fixing the errors it causes would cause too much churn for it
to be done in this commit.
This gives function/line/region coverage of 88%/91%/84%. Most of the
translation bugs fixed in earlier commits were found while writing these
tests: the tests were kept separate to not drown out the fixes in the
commit diffs.