Refactor loader code and add preliminary NCCH support

This branch refactors the ELF/loader code (code responsible for loading bootable files), as well as adds support for loading the NCCH format. NCCH is used for loading the CXI (CTR Executable image) and CCI (CTR Cart image) files used by retail software. For now, there is simply one function that loads the NCCH ExeFS .code section (executable code). Eventually, I'd like to have this abstracted in a nicer way, however I don't expect this to happen until file system emulation has gotten quite a bit more mature.
Doesn't look like this file needs anything but common_types.h