(WIP) refactor fields to be more pythonic, better verification

TODO:
 * fix test classes of identical names
 * docs, esp around ResourceTypes
 * think about how to handle dbdicts
 * no PR until it's clear that this works for filtering