Refine evaluators framework
Created by: typhoonzero
Related: https://github.com/PaddlePaddle/Paddle/pull/4828
After some surveys, TF accumulate evaluators by returning an update_op
so that developers can run this op at the desired time(every n batches): https://www.tensorflow.org/api_guides/python/contrib.metrics
Paddle evaluators should also be a "subgraph" which defined in python using operators. The internal states should be stored inside child scopes: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/metrics_impl.py#L333