consolidated chunks of code duplicated 4x into log_and_deny and log_and_pass

in apr_*_handler subs, return DECLINED when connection is not available to read (like during tests)

added 23 tests

deprecate action argument
	'action log' did nothing, better logging controls available with loglevel
	'action deny'  ->  reject 1
	'action denysoft' =>  reject 1 reject_type temp

POD
use head2 for config options (instead of over, item, back)
added loglevel section
updated for replacement of action with reject options
Plugin.pm: added is_immune
updated plugins to use QP::Plugins::is_immune
renamed reaper -> naughty
earlytalker: add explicit reject_type perm

and replace whitelist with is_immune
helo: new plugin

helo - validate a HELO message delivered from a connecting host.

Includes the following tests:

	is_in_badhelo
	invalid_localhost
	is_plain_ip
	is_address_literal [N.N.N.N]
	is_forged_literal
	is_not_fqdn
	no_forward_dns
	no_reverse_dns
	no_matching_dns
helo: loosen up matching DNS requirements

added X-HELO header to message
added timeout option
quieted down debug logging
helo: tweak POD language

also mention the connection notes in the POD
Fix up spec file to build direct from git checkout
Reformat upgrade notes
Merge pull request #34 from msimerson/master

apply pending commits from my fork
Merge pull request #29 from msimerson/helo

Helo
Merge pull request #15 from msimerson/early

consolidated chunks of code duplicated 4x into log_and_deny and log_and_...
auth: adding tests (should have attached with a previous commit)
restore validate_password test

not sure how/why that got removed, but it wasn't intentional