Make HyperLogLog serializable (alt. implementation) + bonus fix

This PR is intended to replace: https://github.com/addthis/stream-lib/pull/70

It supports serialization of HyperLogLog objects using the (relatively) terse Externalizable format, but
without any of the unpleasant requirements that would otherwise be imposed on it. (public no-arg
constructor, inability to use final fields, public read/ write object methods that affect the private
state). Full disclosure is that it does generate this holder class as extra garbage, but it is tiny and
I make up for it (see next paragraph). It does also theoretically affect the overhead of writing the class
name during invocation of externalizable (the inner class has a longer fully qualified class name), but
people using externalizable are presumably already are aware of such risks.

I also fixed a rather unfortunate waste in both the existing and newly added deserialization options
where the byte array would make a nearly full copy of itself after reading only 8 bytes for log2m and
length prefix.