[SPARK-4281][Build] Package Yarn shuffle service into its own jar

This is another addendum to #3082, which added the Yarn shuffle service to run inside the NM. This PR makes the feature much more usable by packaging enough dependencies into the jar to run the service inside an NM. After these changes, the user can run `./make-distribution.sh` and find a `spark-network-yarn*.jar` in their `lib` directory. The equivalent change is done in SBT by making the `network-yarn` module an assembly project.
Should we name this something like `spark-shuffle-service-yarn-${hadoop.version}`? The current name is very generic and, unlike our internal build, this will be user-facing since some folks might need to actually copy this jar into a location for YARN. It might be good to make it very obvious what this is.