runtime (caml_final_do_all_calls): value finalization must be performed in reverse order

(according to documented semantics of Gc.finalise)
runtime: asmrun didn't compile (fixed it)
runtime: the great merging of asmrun/startup.c into byterun/startup.c

Fix: asmrun didn't support the 't' flag (caml_trace_flag) in OCAMLRUNPARAM.
runtime (caml_final_do_calls): removed an unjustified assertion that (young == old), fixed an off-by-one error
runtime: allowing for multiple calls to caml_startup and caml_shutdown