Spark Integration: Collect System Metrics from Spark Job

Build running here: https://builds.cask.co/browse/CDAP-DUT176-5

@anew : Please review. Thanks. 
This may have `NullPointerException`. Use double try block instead:

```java
try {
  BufferedWriter writer = new BufferedWriter(sparkMetricsPropertiesFile.getOutputStream(), Charsets.UTF_8);
  try {
    writeSparkMetricsProperties(writer);
    return new File(...);
  } finally {
   // If this throws IOException, treat it as failure as well. If that's not the case, use Closeables.closeQuietly
    writer.close();
  }
} catch (IOException e) {
  throw Throwables.propagate(e);
}