Introduce the --min-memory option and compute gcThreshold as in Mozart 1

* Compute the threshold as explained in
  http://mozart.github.io/mozart-v1/doc-1.4.0/system/node65.html#section.property.gc,
  that is gc.threshold = gc.active * 100 / (100 - gc.free).
  Of course, we shall always have heapSize >= gc.threshold * (1 + gc.tolerance) / 100
  (this is not implemented in this commit for clarity).
* We reduce gc.tolerance to 10% (from 20%) to avoid
  a too large allocation or a too low gc.threshold.
* Also add heapSize which maps to property "gc.size" and is
  between minimalHeapSize and maximalHeapSize.
* VirtualMachineOptions must be in core-forward-decl.hh
  because vm-decl.hh includes properties-decl.hh, so
  properties-decl.hh can not include vm-decl.hh.
* Requires PropertyRegistry to be constructed directly with the VMOptions,
  to set the essential GC parameters for heap management ASAP.
* BoostEnvironment now keeps the VMOptions and pass them for each new VM.