Fixed a major concurrency bug

Currently, mTextureInfoList is a regular ArrayList which is not thread
safe. It causes all sorts of concurrency issues with the GLThread when
the list is modified by another thread. This has a nice side effect of
now allowing dynamic texture allocation during the render loop which is
helpful for binding framebuffer to texture on-the-fly.