add caml_modify_field and caml_initialize_field

Stephen Dolan reported that he had to do this change as part of his
Multicore-OCaml work, and it seems applicable independently of it.

This patch does not remove all uses of Field as a lvalue, or all
&Field(..) constructs, but only those that fit into the following
patterns:
  caml_modify(&Field(v, idx), w)
  caml_initialize(&Field(v, idx, w)

I had some questions when working on the code, which are marked with
"/* GS: ..." comments.