smtpd: refactor requirements checks
smtpd: refactor requirements checks

requirements are now implemented as functions, and are checked
with a “with(requirement, impl)” function.

kinkome/kinko.smtpd,kinkome/kinko.smtpd,kinkome/kinko.smtpd