gc_mark_task improvements

this is more careful in gc_mark_task given that part of the jl_root_task stack may not have been moved (also don't bother copying some of the top of it)

with the recent changes to julia_init, this scenario was possible, if julia_init was called from a lower stack frame then any call to `jl_apply`. this only applied to embedded context, since this doesn't happen for `repl.c`. however, since it can handle it, i also make use of this to skip copying the first 1024 bytes of the root task.

@JeffBezanson done as a PR so you can check that my `>=` conditions are correct (with the assumption that the stack grows down)