Bug 7440: Improve type unification for ins--invoke

* sources/lib/llvm/llvm-builder.dylan
  (ins--call): Factor out type unification code
  (do-constrain-call-type): New utility function
  (ins--invoke): Add a call to do-constrain-call-type to do type
   constraint on the function return types.
Bug 7458: Don't emit type checks against raw types

* sources/dfmc/llvm-back-end/llvm-emit-type-check.dylan
  (do-emit-type-check on <&raw-type>): Do nothing.
Bug 7458: Correct LLVM debug type generation for raw types

* sources/dfmc/llvm-back-end/llvm-back-end-types.dylan
  (initialize-type-table): Correct type table entries for raw pointer types.

* sources/dfmc/llvm-back-end/llvm-emit-debug.dylan
  (llvm-reference-dbg-type): Make use of the %raw-type-dbg-encoding-table
   for debug type mappings of raw types as originally intended.
Bug 7458: Explicitly cast raw words to pointers when needed

* sources/dylan/dylan-c-ffi-stubs.dylan (make-c-pointer-internal): Use
  primitive-cast-raw-as-pointer to turn a raw word into a pointer.
Bug 7458: Implement value cells for single-word raw types

* sources/dfmc/llvm-back-end/llvm-primitives-value-cell.dylan
  (op--make-closed-over-cell on <&raw-type>): New method to
   instantiate a value cell using primitive-make-raw-box.
  (op--get-closed-over-cell on <&raw-type>): New method to read a raw-typed
   value cell slot.
  (op--set-closed-over-cell on <&raw-type>): New method to set a raw-typed
   value cell slot.
Bug 7458: Remove a redundant instruction

* sources/dfmc/llvm-back-end/llvm-primitives-alloc.dylan
  (primitive primitive-byte-allocate-leaf-filled-terminated): Remove a
   redundant/dead generated instruction.
Bug 7458: Fix primitive-raw-as-boolean LLVM code generation

* sources/dfmc/llvm-back-end/llvm-primitives-basic.dylan
  (primitive-raw-as-boolean): Don't compare <raw-boolean> (i8) values
   against a word-sized zero value.
Bug 7458: Fix byte-offset handling in primitive-element(-setter)

* sources/dfmc/llvm-back-end/llvm-primitives-basic.dylan
  (primitive-element, primitive-element-setter): Use the byte-offset pointer
   rather than ignoring it.
Bug 7458: Implment primitive-fill! and primitive-replace!

* sources/dfmc/llvm-back-end/llvm-primitives-basic.dylan
  (op--slot-ptr): New utility function for offsetting into word-sized object
   slots.
  (primitive-fill!): Add implementation.
  (primitive-replace!): Add implementation using llvm.memcpy.
Bug 7458: Fix primitive-fill-bytes!

* sources/dfmc/llvm-back-end/llvm-primitives-basic.dylan
  (primitive primitive-fill-bytes!): Truncate the value argument to i8 since
   the argument is normally the result of integer-as-raw().
Bug 7458: Fix carry/borrow handing in machine-word primitives

* sources/dfmc/llvm-back-end/llvm-primitives-machine-word.dylan
  (primitive-machine-word-unsigned-add-with-carry,
   primitive-machine-word-unsigned-subtract-with-borrow): Zero extend
   carry/borrow bits to match the declared <raw-machine-word> type.
Bug 7458: Generate type-correct code for initializing raw slots

* sources/dfmc/conversion/define-class.dylan
  (compute-slot-initialization-code): Since keyword initializer arguments
   are passed in as object pointers, cast them before assigning to raw slots.
Bug 7458: Check types of values stored into slots

* sources/dfmc/llvm-back-end/llvm-emit-computation.dylan
  (emit-slot-ptr): Return the LLVM type of the referenced slot.
  (emit-computation on <slot-value>): Handle changed emit-slot-ptr signature.
  (emit-computation on <slot-value-setter>): Check the type of the value
   being stored into the slot against the slot type.
Bug 7458: Handle mixing byte- and word-sized integers

* sources/dfmc/llvm-back-end/llvm-primitives-basic.dylan
  (primitive-byte-element-setter): Narrow values to eight bits when needed.
  (primitive-raw-as-byte-character): Widen bytes to word size before
   tagging them as <byte-character> instances.