Spark Integration: Collect System Metrics from Spark Job

Build running here: https://builds.cask.co/browse/CDAP-DUT176-5

@anew : Please review. Thanks. 
The `generateSparkMetricsConfig` can throw Exception, meaning the cleanup task may not be even constructed.

Also, the exception is propagated from IOException, in fact I think it's better for the method to throw `IOException` instead of a `RuntimeException.