Handle and test negative numbers in the pickler

* Reuse the conversion to VirtualString, which needs
  no tell/seek tricks and produces a std::string.
* Make writeSize() take a size_t as we clearly expect
  a positive number and perform bitwise operations.
Replace the Oz pickler/unpickler by the C++ version

* Much faster and the C++ pickler should be as complete.
* The only difference is the order of pickling entities:
  * The Oz pickler first pickles values, then literals, arities,
    the rest except abstractions/chunks and finally abstractions/chunks.
  * The C++ pickles first pickles values and literals together,
    then arities and finally the rest.
* The number of bytes produced should always be identical,
  only the order and indexes of entities might change.