ssl: Honor TLS client ECC extension

Also the server should only send ECC point formats extension not ECC curve
extension.
ssl: Fix dialyzer spec
Remove extraneous dev debug code left in the close function.

We do not need a traceback on every close in inet_tls_dist and this
breaks using nodetool in control scripts on SSL clustered nodes
Fix client_preferred_next_protocols documentation
Add SSL Server Name Indication (SNI) client support

See RFC 6066 section 3
Add a new server_name_indication option to ssl:connect

- Set to disable to explicitly disable SNI support.
- Set to a hostname when upgrading from TCP to TLS.
Update documentation
ftp,ssl: Fixes broken type link (ssloption).
ssl: Refactor handshake and record handling
ssl: Refactor connection and handshake handling
ssl: Refactor premaster secret handling
ssl, public_key: Dialyzer fixes
ssl: Refactor API

New design : ssl - Main
    	     tls - Reflect tls specific semantics
	     dtls - Reflect dtls specific semantics
ssl: Test case enhancement

Make sure that test cases does not fail due to timing circumstances,
use selective receive even if it means we can not use test library functions
in some cases. TCP does not have delivery guarantee to application layer,
so sometimes a error message {error, Msg} or {error, closed} can be acceptable.
ssl: Dialyzer fixes
ssl: API and supervisor
ssl: Refactor connetion handling
ssl: Trap exits
Prepare release