Move C++ pickling builtins to their own boot module Pickle

* Rename pickle to pack and unpickle to unpack as they act on VirtualByteString.
Add a test for pickle-able but not equal entities
Implement BootPickle.save and BootPickle.load
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.
Use a vector<char> buffer in pickler as it involves one less copy

* This is due to the current implementation of ozVSGet().