[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.
Hey @witgo I just pushed a hot fix. I didn't realize `make-distribution.sh` fails fast if a copy fails. Thanks for bringing this up.