devdocs notes on memory layout and runtime initialisation

Some notes I made while learning about runtime internals.
Maybe useful for other new developers.
But maybe misleading because eggnog :)

julia.h has not been scrubbed to ensure that it contains only the public runtime interface (#8690). additionally, there are still implementation details present in this file which should not be depended upon. the layout of a `struct jl_tuple_t` is one such item.

the compiler decides whether the gc needs to be a runtime operation, or whether it can lift some of the allocation/free workload. i agree that it is partly separated from the compiler, but that does not mean it is part of the public runtime interface. also, other than JL_PUSH/JL_POP&friends (which are part of the public interface), the gc is not part of julia.h. nor is newobj (which is described below). Structs for the built-in types should probably be in julia_internal.h, but are currently still in julia.h for legacy reasons.

`jl_typeof` is the only (macro) function mentioned here which can reliably be considered a public interface.