Add basic NewUI in-game menu.
Merge pull request #2875 from Orphis/pbp-load-fix

Loader: Open PBP files even if we don't find the /PSP/GAME path
GPU/Math3D: Replace * and % operators with the less ambiguous function names Dot and Cross.
GPU/Math3D: Add more structs to the union to allow indexing Vec3 objects like colors or texture coordinates.
GPU/Math3D: Replaced Vec3::v array with a method called "AsArray".
GPU/Math3D: Replace ambiguous Vec3 constructors with static methods returning a new Vec3 object.

Possibly fixes a bug or two because the old code was using the constructors incorrectly.
GPU/Math3D: Introduce a new Vec3Ref class which allows to use vector operations on references.
GPU/Math3D: Change Vec3Ref to allow for arbitrary base types for each component.
GPU/Math3D: Add a Vec4 class.
GPU/Math3D: Add a Vec2 class.
GPU/Math3D: Added component swizzlers for Vec2Ref, Vec3Ref and Vec4Ref.
GPU/Math3D: Rename VecXRef::Mul to the star operator.
GPU/Math3D: Support converting Vec3Ref and Vec4Ref objects to u32 color values.
GPU/Math3D: Support accessing Vec2Ref members by the names "s" and "t".
GPU/Math3D: Add method for casting vectors and add const swizzlers.
GPU/Math3D: Add left-side scalar multiplication.
GPU/Math3D: Only implement some VecX methods when they make sense.
GPU/Math3D: Replace VecXRef::Lerp methods with more general and clearer Lerp and LerpInt functions.
GPU/Math3D: Initialize all member references of VecXRef instead of relying on unions being laid out in a specific way.
GPU/Math3D: Fix a critical issue in VecX related to incorrect copy constructor usage.
GPU/Math3D: Fix swizzler functionality.