[SPARK-2938] Support SASL authentication in NettyBlockTransferService

Also lays the groundwork for supporting it inside the external shuffle service.
We can't do that because we don't know AppId until we register with the TaskScheduler in the SparkContext (post-SparkEnv creation).