smaz_generic: brind the predicate back as a separate function

Since Smaz dictionaries are meant to be global hard-coded constant
objects, it makes sense to check the precondition only once, e.g. in
a test suite, and not for each and every subprogram call.