gui: two texture speedups

1. Check to see if we have a texture loaded already before opening/uploading
   another instance of it.

2. Set a time-out for deleting textures. If they are needed again before the
   time-out expires, they are re-added to the loaded textures array and ready
   for use again. Otherwise, they are deleted after X msec. This helps to avoid
   doing _really_ nasty things, like re-loading the background image when
   moving from home to settings.

This gives a big improvement on embedded devices. Background image reloads were not noticed before because confluence no longer uses the large texture manager, so the slow jpeg decodes aren't logged.

This timeout will eventually move to a release after n scenes have been rendered. As I'm working on moving rendering to a dedicated thread (async render), we need the ability to guarantee that a texture will hang around for a period of time after guilib has processed it.