Use VirtualByteStrings in OS.oz.

But tolerate VirtualStrings in compat functions.
Added functions to get a VS as a new LString.
Added builtin Float.toInt.
Raise the proper error record on illegal feature selection.
Simpler implementation of getIntToStrBufferSize().
Fixed error raising in boostenv.
Fixed build failure with clang.
Improved build scripts for easier setup of a MinGW build env.
Implemented OS.exec and OS.pipe (the latter on Unix only).

This is a rather raw implementation that could use a review.
Added the builtin OS.putEnv.
Use CMake variables for some Properties of the VM.
Added a registry of builtin modules in the VM.
The body of builtins is now in 'static void call'.

Instead of (non-static) 'void operator()'.
Fixed a bug in NodeDictionary::lookupNode().
Added the Boot builtin module.

This module can find builtin modules via the VM registry.
Fixed a misordering of opcodes which was confusing.
Added a function bootUnpickle().

This function can unpickle the bare minimum.
Fixed memory management of builtin data.
Completely reviewed the 'protect' mechanism.

Now it is base on the reference counting of std::shared_ptr. This
gives a much shorter *and* smarter implementation. Indeed, it is
not needed to explictly call ozUnprotect() when the node is no
longer used. It gets done automatically by the reference counting
mechanism of std::shared_ptr.
Fixed a bug in IntermediateState.