Hadoop agnostic builds

This PR allows one Spark binary to target multiple Hadoop versions. It also moves YARN support into a separate artifact. This is the follow-up to PR #803.

CC: @mateiz, @mridulm, @tgravescs