ldap: ws cleanups, test load ldapjs in register,

only register hook if ldapjs loads
ldap: support per-domain LDAP params
ldap: make sure domain exists before using it
move host_list functions into host_list_base

* updated rcpt_to.in_host_list and rcpt_to.ldap accordingly
* added tests for base + 2 plugins
Merge pull request #721 from msimerson/rcpt.ldap

LDAP: ws cleanups, test load ldapjs in register,
Merge pull request #724 from msimerson/smtp_client2

smtp_client: moved 5 var STATE_ constants into STATE { ... }
smtp_client: move 5 STATE_ vars into object
line_socket: rename socket to 'socket' (was: self)
smtp_client: moved STATE_* vars into STATE object

and renamed self -> client (meaningful)
smtp_client: handle timeouts in a more robust way

set a default if whatever val arrives doesn't parseInt()
smtp_: more linear code
smtp_client: slight revision to get_client_plugin

pass it a config object, rather than a config file(ish) object. IOW, have
smtp_client and smtp_proxy pass in the 'main' section of their config file
instead of their entire config.
when rcpt_to.length===1 and more specific smtp

route is defined in smtp_forward.ini, forward the message to the more specific
smtp route.
when a smtp connection has multiple recipients and

they all are destined to the same forward host, use the more specific
smtp_forward host.
smtp_forward.md: reference issue #573
clean up rebase/merge crufties
smtp_forward: add additional check for domain