[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.
Yeah, actually Yarn already provides slf4j so it doesn't need to be a core dependency. For standalone mode, this is also required by Spark so it should just be a provided dependency. HOWEVER I just realized I forgot to actually make it provided by adding the tag.