helo: results processing, skip checks after 1st pass
helo: added match_rdns, mismatch, reject, results store

added reject=true config option
added helo_init, which refreshes config & tracks multiple invocations
split valid_tld from no_dot into it's own function
when skipping tests, provide a reason
helo: remove helo_ prefix from function names
helo: improved cfg option handling
helo: added first test
helo: tests, tests, and more tests!
helo: refactored octuplicated exception cases into

new should_skip function
helo: tidying up config settings
helo: added emit_log
helo: added forward_dns and valid_hostname

no_dot and valid_tld were folded into valid_hostname
helo: s/is_public_suffix/get_organizational_domain/
helo: updated docs with new config settings
helo: fixed an invalid logger call
helo: skip forward_dns if valid_hostname didn't pass
config: fix for .ini booleans being returned as strings

My previous boolean fix fixed the default case for when the value wasn't declared in the ini file. then it always returned a boolean. However, when a default was defined ('+sect.key'), that option wasn't matched in options.booleans array because of the +/- prefix.
helo: forward_dns requires valid_hostname and

added a domain match pass for forward_dns when rDNS passes and the helo hostname domain matches the rDNS domain.
helo: added usage example with results.has
helo: added DENYSOFT for for DNS timeout, if reject=true
Merge branch 'results' into helo
Merge pull request #519 from msimerson/config

Merged