TAJO-1265: min(), max() does not handle null properly

min() and max() handle null value separately from non-null values.
It computes min() or max() among non-null values first.
If no non-null value exists, they return null value.
Implementation style of min() and max() is also changed that 
there are abstract classes of Min and Max common for all the data types
and only type specific methods are implemented for each type.