TAJO-1112: Implement histogram interface and a candidate histogram

Hi everyone,
This patch contains:
+ a histogram interface with utility functions, including selectivity estimation
+ 2 candidate histograms: equi-width and equi-depth
+ some unit tests for integrity and accuracy of the histograms

In the accuracy tests, given a 100k data set and a 10k random sample (10% of the data set), the estimation accuracy is about 80% - 95%, for both random data of uniform and Gaussian distributions. Histogram construction time (just consider the first construction time, without cache effect) is about 15 ms.

Please review and advice me if anything should be improved. Sincerely!
To allow the function call only in unit tests, you can use the @VisibleForTesting annotation.