* add ability to set path of card image before CARDInit
* begin work on updating card class to support gci folders
a lot of work will just be directly reading from whatever folder is supplied, instead of relying on an always open FileIO handle
* swap to interface system for easier code seperation, begin actually planning out logic for gci loading
* fix wrong name for func, add modified time to new gci file entry
* get gci folder working
tp seems to be happy with everything ive done, the only funcs im worried about are getSerial and getChecksum as those dont do anything atm.
* fix createFile not assigning file index to output FileHandle, CARDSetLoadType now takes an enum
* make probeCardFile a virtual func so GciFolder and RawFile can both implement their own, bit of cleanup
Previously we'd write each block individually, this is extremely slow,
instead let's allocate the entirety of the dummy data and write that all at once.
This gives a considerably speed boost and prevents games from stalling at launch
This is a breaking change: `GXSetViewport`, `GXSetScissor`, `GXSetTexCopySrc`, `GXSetTexCopyDst` now accept logical coords relative to the `VIConfigure` EFB size.
`GXSetViewportRender` and `GXSetScissorRender` are used to override the scaled viewport/scissor from the logical coords.
* Add experimental mouse API
* Add aurora::core library for aurora::ms
* Add absl::flat_hash_map library for aurora::ms
* Add comment clarifying MS is an aurora extension
* Clear MSStatus::buttons to prevent spurious values
* Minor cleanup for MSRead and MS_BUTTON_* bits
* Switch to Poll -> Read paradigm
* Clear mouse scroll state before polling for events