Make sure that we check read permissions before returning an EmptyVector from DBObject.getFieldValues()

Note that one impact of this is that permOverride() can be called on a
DBEditObject plugin object that previously could be assured that a field
always existed in the object being checked.

It's now the case that permOverride() can be called to check perms
on a vector field that is actually not present in a given DBObject.

This may cause pre-existing DBEditObject subclasses to throw exceptions
in permOverride.  Caveat Coder.
Put in a safety check in gasharl mapEntryCustom permOverride()

This is to make sure we don't freak out if we're called on a
field that is not present in the object we're checking.

This is made necessary by commit 9148bd3ced4b64116295db030cbaa47742491109