(1) Merge two same-sized lists into a single map with struct values.
(2) Constify all the string-to-enum maps and move them into the
scope where they are used.
(3) Move a bunch of object methods into static free functions to
simplify the header and reduce code duplication.
(4) The PARAM_KEY_FOO string constants were referenced only once (except
in a few error messages) so replace them with string literals.