Fix broken StartTLS

I tried to fix starttls as looks like it was broken. I tried to implement it to permit the upgrade to tls not only at connection time but also after some unencrypted requests. This introduces some changes to fix the reader goroutine, count outstanding requests and manage concurrent calls.