kernel/arch: Split pg_init() function into smaller, more comprehensible functions
- Split the pg_init() function into several functions
- the _identity_map() function, for creating the identity map
- the _pae_identity_map() function, for the actual work on PAE systems
- the _legacy_identity_map() function, for the actual work on non-PAE systems
- the _clear_available_frames() function, to clear usable frames from the frame map
- Add comments explaining all of the new functions
- Expand existing comments where necessary