(pup-1766) Break out at first failed match

The previous version of default_match walked through all of the
hash elements even after finding a failure. This patch uses all?
to break out at the first failed match; as an additional benefit,
the code is cleaner.