Users will want to set options from an environment variable or something
like that. Particular GC implementations will want to expose an
expanded set of options. For these reasons we make the options
interface a bit more generalized and include parsing.
Choose the ragged stop strategy when the GC kind is determined, so that
we do so with respect to a single measurement of pending unavailable
bytes.
Also remove assert in heap_should_mark_while_stopping, as it can be
called after stopping too, when evacuation is enabled.
We don't need a pin bit: we just need to mark pinned objects before
evacuation starts. This way we can remove the stopping / marking race
so that we can always mark while stopping.