[SPARK-2938] Support SASL authentication in NettyBlockTransferService

Also lays the groundwork for supporting it inside the external shuffle service.
This is a change from the prior version -- before, only the client did this transformation, now both the server and client do.