[RFC] Error codes

I've noticed that almost no HLE code even tries to handle and correctly report errors. This means that "innocent" errors such as missing SD files in blargSnes trigger assertion failures and crashes. In addition, a lot of code uses ObjectPool::GetFast which should really be using ObjectPool::Get instead.

The intent of this effort is to make the system calls all deal with errors and return reasonable error codes, instead of crashing the emulator. (Or silently doing out of bounds access in non-debug builds in some cases...)

This is in no way mergeable and is merely an RFC to get feedback on the coding style and solutions to use.
    union ResultCode {
        u32 code;

        // double-check the template parameters, please.. :D
        BitField<0, 10, ErrorDescription> description;
        BitField<10, 8, ErrorModule> module;
        BitField<21, 7, ErrorSummary> summary;
        BitField<27, 5, ErrorLevel> level;

        // If you like, provide ResultCode(u32) and ResultCode(ErrorDescription, ErrorModule, ErrorSummary, ErrorLevel) here.
    };

Mind you, ErrorDescription needs to be changed to something like "enum class ErrorDescription : u32" for this to work properly.