Read /proc filesystem to log CPU/Network/Disk utilization.

Logging can be enabled by setting the spark.procParser.enabled
configuration variable, and the logging interval can be configured
with spark.procParser.logIntervalMillis.
Added fetch wait time and fraction waiting to UI
Added precise logging for fetch time.

This commit adds functionality to the job logger to log exactly
when each fetch started and finished, how long it took to read
the fetched data off of the machine where it was fetched from,
how big each individual fetch was, and exactly when the
application requested shuffled data.
Add shuffle write time to job logger
Added GC and deserialize time to JobLogger
Removed lengthy blockRequestTimes output
Added input size and read time.

This commit adds a new metric in TaskMetrics to record
the input size and read time when data is read from the BlockManager,
from HDFS, or from a parallelized collection, and displays this
information in the UI.