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
* optimize fifo with realloc and remove double lookups
* bp cache, xf cache, and last pipeline ref cache
* remove double lookup from find/try_emplace
* change name
* Move xfRegCache
* Update gx_test_stubs.cpp
---------
Co-authored-by: Luke Street <luke@street.dev>