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.
Almost all of the generic ELF loading code was taken from Dolphin. It's also not "new" with this PR, I just renamed the files and consolidated two headers.