Added support for SSL Server Name Indication

Motivation:

When we need to host multiple server name with a single IP, it requires
the server to support Server Name Indication extension to serve clients
with proper certificate. So the SniSslHandler will host multiple
SSLEngines and wrap/unwrap data as client handshake request indicates.

Modification:

* Added SniSslHandler to host multiple certifications in a single server
* Update SslHandler to make it subclass friendly

Result:

User could use SniSslHandler to host multiple certifcates at a time.
It's server-side only.