Fix(sdk): don't cast key code to string when sending char input to game

.

Summary

This update applies to both FiveM and RedM, and includes the following changes:

  • Client security improvements and abuse mitigation
    • FiveM: Refactor ‘PointerArgumentSafety’ to be part of the build process, and marks ‘Any*’ arguments as an explicit no-go.
    • Prevent abuse of non-msgpack arguments passed to ResultAsObject and a direct InvokeNative call being able to return an arbitrary string as a result.
    • Reset result state if it ‘looks like’ game code didn’t actually touch the result.
    • Prevent DllImport from non-platform modules in Mono.
  • Replace the deprecated frontend.chrome-dev.tools URL for profiler.
  • FiveM: Prevent custom key binds breaking with a lot of duplicate RegisterKeyMapping calls
  • Fix a few C# scripting bugs, such as enum not being correctly serialized, and a server-side NullReferenceException issue.
  • Fix V8 (JS) stack overflows crashing the game instead of raising an error.
  • Fix game build switching for second-client (CL2) mode
  • Fix LocalPlayer state bag breaking when a client was rejoining a server after being disconnected, but getting assigned the same player ID.
  • FiveM: Fix a rare FxDK map compilation issue, and fix key input in FxDK.