Using the caml_alloc_some and ptr_to_option functions that
allocate OCaml option values enables simplifications in many
cases. These simplifications also result in avoiding unnecessary
double initialization in many cases, so yield a minor optimization as
well.
Also, change to avoid using the old unprefixed functions such as
alloc_small and instead use the current caml_alloc_small.
A few of the changed functions were slightly rewritten in the
early-return style.