The new environment RETRO_ENVIRONMENT_SET_SERIALIZATION_QUIRKS allows
cores to communicate any quirks their implementation of serialization
may exhibit. This is useful for distinguishing between serialization
implementations that are sufficient for netplay, rewind, regular use,
etc, as each of these have different requirements and it should be
possible to support a "good enough" serialization without breaking
frontend features.
This (mostly) prevents other paths from accidentally side-stepping
Netplay. Netplay itself now sets an in_netplay variable to avoid
self-recursion in its own core_run calls.
In this first cut, Netplay can be enabled "mid-stream", but not much
else is supported. Client reconnection and either-side disconnection are
listed in the menu but don't yet do anything.
Spectate mode is now far more similar to net (normal) mode, and, more
importantly, it works. In addition, spectate mode will not fast-forward
to catch up with the server if it lags too far behind.