[SPARK-2938] Support SASL authentication in NettyBlockTransferService

Also lays the groundwork for supporting it inside the external shuffle service.
I don't follow your comment? It used to encode it for both client and server before as well. 

It seems bad if you are trying to do a sasl negotiation with a null password.