Implement to be (a|an) [non-empty] (map|hash|object) whose properties satisfy

Turns out it was easy to implement just overload the "function" case of the "whose keys satisfy" variant.