[SPARK-2938] Support SASL authentication in NettyBlockTransferService

Also lays the groundwork for supporting it inside the external shuffle service.
For inclusion in the YARN node manager with minimal dependencies (no dependencies on Spark or Scala).