[SPARK-3797] Run external shuffle service in Yarn NM

This creates a new module `network/yarn` that depends on `network/shuffle` recently created in #3001. This PR introduces a custom Yarn auxiliary service that runs the external shuffle service. As of the changes here this shuffle service is required for using dynamic allocation with Spark.

I have tested this on a stable Yarn cluster.
@andrewor14 
Here is a problem:
I use  this command line: `./make-distribution.sh -Dhadoop.version=2.3.0-cdh5.0.1 -Dyarn.version=2.3.0-cdh5.0.1 -Phadoop-2.3 -Pyarn  -Pnetlib-lgpl` , but `$FWDIR"/network/yarn/target/scala*/spark-network-yarn*.jar` does not exist