[SPARK-4537][Streaming] Expand StreamingSource to add more metrics

Add `processingDelay`, `schedulingDelay` and `totalDelay` for the last completed batch. Add `lastReceivedBatchRecords` and `totalReceivedBatchRecords` to the received records counting.
Hi TD, what's your meaning of `And other places should not have to use Option`, If here as an example, change to 

```scala
registerGauge("lastCompletedBatch_submissionTime",
    _.lastCompletedBatch.map(_.submissionTime).get, -1L)
```

`get` will throw exception when there's no completed batch. I'm not sure what's actual meaning, sorry if I misunderstand anything.