UPDATE 1: As suggested by @caseywstark , use dicts. These are mutable, but unlike our existing dicts, they'll only be mutable on a pf-by-pf basis.
UPDATE 2: Responding to suggestions from Anthony, and removing usage of ABCs.
UPDATE 3: This includes mergers from mainline development, including answer testing. Additionally, and most importantly, I have split the fields related to coordinates into specific files, and removed them from the main universal_fields definition. I believe there may be more I have not yet caught. Many tests fail as a result of the increased testing coverage that now covers items not yet ported to 3.0. Fixing tests will be the next priority, which may delay further work, but if the outline of how the fields are structured passes muster I will continue with inserting calls to the coordinate handler wherever appropriate.
UPDATE 4: With this update, I've merged all the newest tests and a bunch fail -- but they fail due to a lack of implementation. I'm okay with this. I think the coordinate handling still needs work, but I'd like to get the other changes made in support of it into the main repository as we iterate further.
Note: most of the failing tests are related to YT-15 .
I agree. Failing due to a lack of implementation is OK for the time being.