add automatic timing of parameter update phase
add automatic timing of parameter update phase

Summary:
Add timing of the phase between last gradient op and the final sync. This gives approximate measure of the latency of distributed computation and helps detecting stragglers. Not intended as a real measure but just for relative comparison.

This could be improved by making nodes share their timings and make decisions based on it. But for first step, we can just look at the numbers ourselves.

Reviewed By: andrewwdye

Differential Revision: D5149273

fbshipit-source-id: c4c346291c0feb6e9c6ceced64e7be667d17dcad

pietern/caffe2,bwasti/caffe2,Yangqing/caffe2,Yangqing/caffe2,xzturn/caffe2,davinwang/caffe2,davinwang/caffe2,pietern/caffe2,sf-wind/caffe2,davinwang/caffe2,pietern/caffe2,sf-wind/caffe2,xzturn/caffe2,sf-wind/caffe2,sf-wind/caffe2,sf-wind/caffe2,Yangqing/caffe2,bwasti/caffe2,xzturn/caffe2,Yangqing/caffe2,Yangqing/caffe2,xzturn/caffe2,pietern/caffe2,bwasti/caffe2,bwasti/caffe2,xzturn/caffe2,pietern/caffe2,davinwang/caffe2,caffe2/caffe2,bwasti/caffe2,davinwang/caffe2