TLS Server Name Indication(SNI) support

Added server side support for TLS SNI. With SNI, we can add multiple host names on a single secure server. The server will check hostname extension of TLS client hello, and wrap/unwrap the connection with proper certificate.

SNI is supported in a new class SniSslHandler extends SslHandler, with a map of String:SSLEngine as argument. You can use glob express like "*.leancloud,cn" as key to match all requests to the domain (as certificate supports that).

Tested on:

* Nodejs 0.10.x: support SNI,  works
* python2 urllib: doesn't send SNI, don't verify server host name in server hello
* python3 urllib: support SNI, works
* Apache HttpComponents on openjdk8: doesn't send SNI, and check server host name


Can the multiple `if` statements be combined into a single switch statement?

```java
swtich(command) {
case SslConstants.SSL_CONTENT_TYPE_CHANGE_CIPHER_SPEC:
case SslConstants.SSL_CONTENT_TYPE_ALERT:
case SslConstants.SSL_CONTENT_TYPE_APPLICATION_DATA:
return null;
case SslConstants.SSL_CONTENT_TYPE_HANDSHAKE:
break;
default:
// do not try to extract server name
handshaken = true;
return null;
}
```