Add :segregated-code feature for gencgc.
If enabled, a code object will never coexist on a page with non-code.
This will allow a nice improvement to conservative_root_p(), because
if a page can't contain code, then any non-lisp-pointer that looks at
the page is instantly ruled out as a potential conservative root.
This brings about a new problem though: fragmentation is excessive
because small object pages are difficult to fill with strictly code.
The waste is as much as 20%. I'd like to solve that issue before removing
the logic for non-segregation. The trick will be to try hard to fill in
partial pages at indices less than the code region alloc start page.
Alternatively, it might be enough to implement a defrag algorithm
for dynamic-space code at SAVE-LISP-AND-DIE time.