SSLv3/TLS support implementation.

Originally SSL has been implemented inside ircd process (-SD and
later -fic patches). However those are generally too dangerous.

The state machine for SSL is rather complicated and prone to bugs,
including various cpu-bound exploits, such as renegotiation
(http://seclists.org/fulldisclosure/2011/Oct/779).

This is why we do stuff in separate process now. The workflow is:
1) IRCD accepts connection as per usual, does its stuff with the socket.
   When it notices the socket belongs to ssl P: line, hands the connection
   over to ssl process via send_fd(), ssl process gets it via receive_fd().
2) SSL process, in turn, hands over cleartext pipe, again, via send_fd()
3) Additionaly, we run multiple ssl workers on smp machines further making
   things more scalable
4) Context switch contention is not really an issue as scheduling tends
   to happen in bulk via select()/poll(), at least from cursory benchmarks
   on linux.

This switcheroo logic greatly simplifies stuff and reduces amount of ircd
boilerplate, as otherwise we'd be forced to use additional connect/accept
state machine on both ends, including various special cases and wrappers
in IRCD code.

If anything will go awry on the SSL side, it will simply kill everyone in
that given worker while the bulk of cleartext users remain unaffected.

Extending this to S2S links is fairly trivial, however there is no demand
for that, yet.

Signed-off-by: sd <sd@hysteria.cz>