This lets us get rid of m_autorelease and m_destroy and we’ll be able
to implement init_game/init_draw later, for stuff that must happen
on the render thread.
We need to ensure the inter-thread messaging queues are empty (more
specifically, not locked) before destroying them. The best way to ensure
that is to explicitly wait for thread termination.
We used to have lol::map::empty() to empty maps, but in std::map
this method is called clear(). It sounds safe to harmonise between
our types and have lol::array::clear() too.
Not all programs support this feature for now, but that’s because they
don’t support the scene framework either, and will need patching. Also
the default postprocess is deliberately exaggerated for now.
Now TickDraw() can be called several times per frame, because we
may have several scenes. This is expected, but it will require
some adjustments later.