Set page permissions for kernel modules based on each section's flags.
In order to separate sections with different permissions, we need to put them in different pages. This will result in some extra memory usage to segregate sections on permission boundaries.
The most complicated bit of this is dealing with previous versions of the boot loader which put pages with different permissions on the same page. They can also leave "holes" at any point in the memory.