Introduce a `OnePastEnd` option for the pointer immediately after the
end of the allocation. This simplifies some of the logic in callers,
where they wants to say 'is base + length safe to use?'.
Also restructure some of the other logic somewhat.
Move slow_allocator into a separate header in the snmalloc namespace and
rename it for consistency with the rest of the codebase. Delete its
copy and move constructors / assignment operators.
Provide a hook so that the exported malloc symbols can be weak. This is
mostly needed so that rtld, which statically links libc.a, can override
the symbols.
Add a bootstrap allocator so that statically linked binaries can have
their TLS space allocated before malloc is called and uses TLS.