[SPARK-2938] Support SASL authentication in NettyBlockTransferService

Also lays the groundwork for supporting it inside the external shuffle service.
it is fine for now, but it would be better to push appId into the constructor (perhaps make it part of SparkEnv).