Performance

This was going to be the cache experiment, but ended up heading to performance optimizations that brought performance a bit closer to what it was before we switched to low-level TIA hardware emulation.

It *does* indeed separated frame generation from core TIA class (which is needed for caching experiments). It also reworks the FPS counter, adds ruby_perf for profiling and fixes swt compatibility.