[WIP] SDL framebuffer cache, avoid redrawing unchanged tiles

Implemented a framebuffer cache to avoid redrawing unchanged tiles.

95% reduction in SDL_RenderCopy calls, tile rendering code went from 50% of total time of the latest HEAD to less than 10%.
On my (weird? Intel/Archlinux) laptop hardware rendering is now playable, software rendering is noticeably faster.

Fixed #7043 

Still WIP due to minor corruption on unicode characters.