Rework texture handling to avoid dangling pointers.

  SDL_DestroyRenderer will implicitly release all textures associated
with the given renderer. So, now the global texture_table hash was
reworked to be per orenderer_t object, as textures are indeed tied
to a renderer, and when destroying an orenderer_t object it will
implicitly destroy all associated otexture_t objects.

  There is also risk that some objects be destroyed after calling
finish_sdl in a gc cleanup in debug mode, so now it tests and sets
to null the global window_table hash table to also avoid risk of
dangling pointers.

  Cosmetic change renaming oglyph_metrics_t to oglyph_t.

  Changed sdl.open_audio to return a new audio_t structure that is
basically return of Mix_QuerySpec to check what really was set, and
added the new sdl.close_audio builtin to give an interface to properly
release resources.