Refactor HashContext into an object.

This is essentially #611 without adding methods to the object.

Tests all pass, one required modification as it relied on the output of var_dump. The B/C break is very small, code that relies on checking is_resource() fails and needs to be changed to also do ìnstanceof HashContext`.

The new class offers only ``__construct()`` and a clone handler, everything else has to be done to he procedural API.

``HashContext`` can also be serialized. Currently this is simply binary data. I wonder if this should be base64/base85 encoded?