Always use Object.prototype.hasOwnProperty for own property checks.
Allow eachField and someField to iterate over untyped objects.

Assertions fail when the object has a "type" property that wasn't
recognized, because silently ignoring faulty types seems risky.