SPARK-2621. Update task InputMetrics incrementally

The patch takes advantage an API provided in Hadoop 2.5 that allows getting accurate data on Hadoop FileSystem bytes read.  It eliminates the old method, which naively accepts the split size as the input bytes.  An impact of this change will be that input metrics go away when using against Hadoop versions earlier thatn 2.5.  I can add this back in, but my opinion is that no metrics are better than inaccurate metrics.

This is difficult to write a test for because we don't usually build against a version of Hadoop that contains the function we need.  I've tested it manually on a pseudo-distributed cluster.

Is there a reason why we can't just set the input metrics (this line) here in both cases? In the case where we can't get the read callback, we just do this exact thing further down. Is there a reason why you can't just make the assignment here and just update the `bytesRead` below?

In fact, would it be possible to just do this at the beginning of the function:
```
context.taskMetrics.inputMetrics = new InputMetrics(DataReadMethod.Hadoop)
```
and not have a `val inputMetrics` here? Then we could just always access `context.taskMetrics` in the code and we'd just have one code path for accessing this.