[SPARK-2938] Support SASL authentication in NettyBlockTransferService

Also lays the groundwork for supporting it inside the external shuffle service.
Oh yeah, sorry, this is package-private. I'm referring to `SparkSaslServer` and `SparkSaslClient`