Only render images when necessary.

Before, images were rendered every time an SDL_Event occurred, leading
to a much higher CPU usage than necessary.
Cleaned code, implemented zooming without SDL_gfx.

The new zooming is far more CPU and memory efficient.
Code connected to this was cleaned.
Fixed event on image loading.

The SDL_USEREVENT was only thrown on image loading error. Now it is
thrown every time load_image terminates, be it successful or not. So the
window is updated after every image loading trial.