Significant improvements to benchmark report

- Added % change to performance regressions/improvements table
- Automatic extraction of Impala version from runtime profiles
- Execution summary row will not be printed if max time is < 100ms or < 2% of the overall runtime
- Failed queries are ignored
- First result is discarded for each query
- Geometric mean was added to summary
- Improved handling of multiple workloads in a single JSON file
- Improved handling of the case when queries are different in results and reference results
- Works well for single client runs. Additional work is needed to handle multiple client runs well.

Change-Id: Ice7b9cc4fd7502a448d35ace10fbcef183df1769
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/4210
Reviewed-by: Ishaan Joshi <ishaan@cloudera.com>
Tested-by: jenkins
Fix bug in ClientCacheHelper::ReopenClient()

In ReopenClient(), we lookup the current client in client_map_, add a
new client to client_map_ in CreateClient(), and then use the iterator
from the lookup to erase the original client. Since client_map_ was an
unordered_map, the iterator may not have been valid after adding a new
entry to client_map_ (in addition, other operations could have
occurred in different threads). To ensure the iterator remains valid,
we switch client_map_ to be a map.

Change-Id: Iafb232169f6b14ad38d3ea3349ac9ca5d21c2f00
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/5046
Reviewed-by: Henry Robinson <henry@cloudera.com>
Tested-by: jenkins