dnsbl: added reject config setting

defaults to true (same as currently). Enables use of DNSBL informationally.
dnsbl: revised reject=false description
dnsbl: when reject=false, log result
dns_list_base, 2 bug fixes: race condition in multi

and returning invalid results (three args instead of two) in lookup callback. Resulted in 'a' being not-null when it should have been.

pending was being incremented within multi/zones.forEach. That functions callback was returning and being executed before pending was incremented for the next RBL. Net effect, the dnsbl plugin saw its callback called with pending=0 for every DNSBL listed.
dnsbl: add error handler
dns_list_base: handle ENOTFOUND error
dnsbl: added search feature (multi -vs- first)
dnsbl: check config settings on every connect
dnsbl: added config.get('dnsbl.ini', { options..}

but it still doesn't parse the listed settings as booleans. I'm missing something.
dnsbl: added "not boolean" warning
dnsbl: removed results conditionals
dnsbl: update config.get() syntax
dnsbl: make zones list unique, which it might not be

if you have zones listed in dnsbl.ini and (b/c of boolean bug) and also in dnsbl.zones, they will be merged instead of concatenated.
dnsbl: removed boolean tests (fixed in PR#488)
dnsbl: added config tests
dnsbl: added tests for get_uniq_zones

Previous dnsbl loaded zones from both config/dnsbl.zones and from config.dnsbl.ini.zones. However, the zones were concatenated instead of merged, so if someone had both zones populated, they'd query each DNSBL twice per connection.
dnsbl: return errors as Error objects
Merge pull request #467 from msimerson/dnsbl

Merged