SPARK-2566. Update ShuffleWriteMetrics incrementally

I haven't tested this out on a cluster yet, but wanted to make sure the approach (passing ShuffleWriteMetrics down to DiskBlockObjectWriter) was ok
minor: but in this file and `SortShuffleWriter` it might be slightly nicer to keep a pointer to the writeMetrics and then use that, rather than calling `.get` on the option to get it back. Just a bit more robust to re-factoring if the code gets changed around.