[SPARK-2938] Support SASL authentication in NettyBlockTransferService

Also lays the groundwork for supporting it inside the external shuffle service.
can u make sure somewhere we log the time it takes to establish a connection? we should definitely log it in the ClientFactory itself.