Bug 7458: Support closed-over value cells in dfmc-llvm-back-end

* sources/dfmc/llvm-back-end/llvm-primitives-value-cell.dylan: New file.
  (primitive primitive-make-box, primitive primitive-make-raw-box,
   primitive primitive-make-single-float-box,
   primitive primitive-make-double-float-box): New run-time primitives.
  (double-float-box-class): New auxiliary function.
  (op--make-closed-over-cell, op--get-closed-over-cell,
   op--set-closed-over-cell): New auxiliary emitter methods.

* sources/dfmc/llvm-back-end/llvm-back-end.lid:
  Reference llvm-primitives-value-cell.dylan.

* sources/dfmc/llvm-back-end/llvm-emit-computation.dylan
  (emit-reference on <cell>): Removed.
  (emit-computation on <make-cell>,
   emit-computation on <get-cell-value>,
   emit-computation on <set-cell-value!>): Handle the closed-over case.

* sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
  ($wrapper-classes): Reference value cell class wrappers in the
   generated runtime.
Bug 7458: Properly handle <make-cell> without a source-location

* sources/dfmc/llvm-back-end/llvm-emit-computation.dylan
  (emit-computation on <make-cell>): Only generate local variable debug info
   for cells when source-location information is available.
Bug 7458: Implement primitive-synchronize-side-effects

* sources/dfmc/llvm-back-end/llvm-primitives-thread.dylan
  (primitive primitive-synchronize-side-effects): Implement using the LLVM
   fence instruction.