- get more accurate sparseSet size when comparing to sort threshold to prevent sparseSet from growing too large
- improve space efficiency for encoding/decoding Sparse and Normal representations of HLL.  Significant space savings but this is a breaking change and not compatible with previous encoding schemes
revert to storing normal ints when using Normal representation
add version to the codec and automatically degrade to legacy decoding when the version number is not present in the first byte of the stream.  All encodes will use the new encoding scheme so the result should be a one time transformation from legacy to new encoding format
convert sparseSet from an List of byte arrays to a int array.  this improves memory efficiency.  This commit does introduce a few more member variables that track HyperLogLogPlus' state.  This member variables such as the sparseSet index and tmpSet index will need to be synchronized in some way to make the class threadsafe
- ensure tmpIndex is reset when the tmpSet is merged with the sparseSet
- only sort values in the encodedSet up to a specified index to prevent uninitialized values from polluting result
- fix failing tests and add a new test of a single element
revert sizeOf to avoid regression issues with 2.4.x branch
Merge branch 'serialization_improvements'

Conflicts:
	src/main/java/com/clearspring/analytics/stream/cardinality/HyperLogLogPlus.java