Made HyperLogLog serializable.
use serializable + externalized private holder

- removes all changes to hyperloglog's public api other than
making it serializable
- fields are once again final
dry read/ write logic and fix wasteful read

- serialization was taking a byte array, reading 8 bytes, and then
making a massively unnecessary copy of all the remaining bytes. This
is another symptom of too much byte[] / BAOS/ BAIS abstraction and
abuse that would be better fixed by culling them entirely, but this
fix should at least resolve the most egregious waste
- factor out common serialize / deserialize logic between the two
serializing options
- the static inner class now just holds a HLL instance so that
it can directly invoke the now factored out DataInput and DataOutput
methods. This also makes it more clear why this class even exists.
add some documentation on serialization
revert api change, but add deprecate

since almost all other public api changes were reverted, I am
reverting this one as well since it isn't unreasonable to guess
that merely adding 'serializable' may not be significant enough of
an api change to require a larger release.

based on the usages and documentation of the constructor though, it
seemed like a logic change, so I added a Deprecation warning to
reflect our intent to change it.
changing name of shim class to SerializationHolder

as per a user's request.
Merge pull request #71 from addthis/ser-change

Make HyperLogLog serializable (alt. implementation) + bonus fix