Fix a couple of minor typos.
Fix a minor typo in the toString method of the Count case class.
Add SparkSql serializer for HyperLogLog.
Add ApproximateCountDistinct aggregates and functions.

We use stream-lib's HyperLogLog to approximately count the number of
distinct elements in each partition, and merge the HyperLogLogs to
compute the final result.

If the expressions can not be successfully broken apart, we fall back to
the exact CountDistinct.
Add the parser for the approximate count.
Add a test case for count distinct and approximate count distinct.