No more recursive mapping
This is a rebase of an older branch I had. The first commit is the one that really matters, and the other ones may be skipped, but contain various improvements (such as making global kernel pages "global", thereby reducing TLB overhead, and some fallible allocation).
Note that this assumes all of PHYSMAP_PML4 can be mapped linearly (restricting physaddr_bits to virtaddr_bits - 1 if we exclude other kernel mappings). This will be the case for nearly all x86 systems, and cannot even architecturally be a problem if the system has 5-level paging (in which case physaddr_bits is 52 maximally and virtaddr_bits is 57).