Allow setting hostname to support TLS-SNI

Note that at present, this doesn't work properly because the `Ssl` struct isn't public.  Before just making it public, I figured that I'd ask what you thought first :smile: 

Also: sorry for the massive Pull Request spam, but these features are different enough that putting them all together didn't seem useful.