Tls libtrust auth

Turns on TLS by default and uses public keys to authenticate access.

- This PR still may require further testing and input on the user experience.
- FSNotify support has not been added to detect changes to authorized_keys
- Depends on #8112

@bfirsh please review and comment on whether this is missing anything needed
Yes, the idea is the verification is run manually after the connection is established.  If the verification fails (meaning the tls connection truly is insecure because it is from an unknown host), the user is prompted and allowed to to add the public key of the remote server to the allowed hosts.  The biggest drawback of this approach is that there is no other way (right now) for the user to verify the host except by looking at the fingerprint of the public key.