HyperLogLog Counter

# WIP, Don't merge yet

# HyperLogLog Counter

This implements #233. A HyperLogLog counter is a probabilistic counter capable of cardinality estimation (how many unique elements appears in a dataset) with very low memory consumption. In khmer it can be useful to give better guesses for hash size parameters (-x and -N).

## References

- svpcom/hyperloglog@f91ed5db8ca8f4cf7b364f2a54dd89e0a125a699
-  http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf
-  http://research.google.com/pubs/pub40671.html

## TODO

- [ ] add tests
- [x] implement Google paper suggestion (64 bits hash function, bias correction)
    
    Kinda done. Using a 64-bits SHA-1 or MurmurHash3, but should rerun bias correction analysis from paper for new constants. For now they work reasonably well.

- [ ] ask @mr-c and @camillescott about the right way to implement extensions
- [x] think more about get_rho function
- [x] parallel reading and HLL merges for better performance
- [x] put constants in a separate header
I don't like this approach. I did this because the RAW_ESTIMATE_DATA_* arrays have different sizes, but there might be race conditions lurking here.

I think I can pad the arrays (with zeros) to make them all the same size, and then do other checks when using them (in the estimate_bias function).