Add "Screen Scaling Filter" option
Math3D: Change the vector swizzlers to return const objects.

Otherwise, people might be tempted to do things like "some_vec4.xyz() = some_vec3", which compiles fine but does not do the expected thing because xyz() does not return references.
Unpause lists after wait signals with no handler.

This stops the gpu/displaylist/state test from hanging, and appears to be
the correct behavior.  It makes sense.
Remove bgm and sfx volume settings.

They don't actually work in all games, and this only confuses users.

Also, the default 7 lowers the volume of audio detected as bgm or sfx, but
not other volume.  This means that some audio may have played too loud in
some games by default, which will be fixed by this change.
Cleanup modules on unloadself.
Allocate module memory from top/bottom per request.
Validate the elf position argument more.
Correct some loadmodule error codes.
Load kernel modules into kernel memory.

This way they don't eat up user memory space.
Add module name to ELF allocations.

Makes debugging it easier.
Blackberry buildfix.
Add a safety check for freeing kernel modules.
Don't count strings as text in module info.
Skip zero size segments in module segment info.
Sum all .bss* sections when counting bss size.
Allocate 0x4000 at the bottom like real firmware.

Should fix #4056.
Allocate kernel modules that fail to decrypt.

This corrects some memory semantics to match real firmware.
Allocate executables low, not at a specific addr.

Since usersystemlib takes 0x4000 at the bottom, this will be the same.
The only impact is that kernel modules may also be able to allocate.
Clarify some module loading code.
Report forwarding module load to loadexec.

Shouldn't do this probably.