Remove some spaghetti code from gencgc initialization
gencgc has to special-case not having a page table, but it did so in a way
that completely altered the control flow. It makes things much more obvious
and consistent to write out out an empty page table from genesis.
(Better still would be to write correct bytes_used values, etc)
This way, the assignments to page_table[] are confined to a single function
which can see whether it has actual values, or should use defaults.
Consequently gc_initialize_pointers() is gone - we don't need a post-check
of whether coreparse performed a required initialization step.
And finally, we can assert that there were exactly the right number
(if nonzero) of page table entries provided in the core file.