Fix write_value of ByVal into a ByRef.
Fix write_value of ByVal into a ByRef.

Previously, you could perform the following, if you assume we could make
`Cell<i32>` into a primitive. (Alternately, you could achieve this with
unsafe code):

    x = Cell::new(12);
    y = &x;

    // Miri locals array:
    //   x = ByRef(alloc123);
    //   y = ByVal(Ptr(alloc123));
    //
    // Miri allocations:
    //   alloc123: [12, 0, 0, 0]

    x.set(42);

    // Miri locals array:
    //   x = ByVal(I32(42));
    //   y = ByVal(Ptr(alloc123));
    //
    // Miri allocations:
    //   alloc123: [12, 0, 0, 0]

Notice how `y` still refers to the allocation that used to represent
`x`. But now `x` was changed to `42` and `y` is still looking at memory
containing `12`.

Now, instead, we keep `x` as a `ByRef` and write the `42` constant into
it.

Unit test to follow in the next commit.

graydon/rust,rust-lang/miri,graydon/rust,aidancully/rust,GBGamer/rust,GBGamer/rust,GBGamer/rust,GBGamer/rust,rust-lang/miri,rust-lang/miri,graydon/rust,aidancully/rust,graydon/rust,tsion/miri,graydon/rust,aidancully/rust,aidancully/rust,graydon/rust,aidancully/rust,rust-lang/miri,GBGamer/rust,GBGamer/rust,aidancully/rust,GBGamer/rust,GBGamer/rust