GI-749: failed texture loads are remembered to save on repeated work
GI-736: Async rendering returns a null texture instead of using placeholder.png to allow CLogging on the main thread
GI-749: Texture load failures are cached for async too... loading files is SLOOOOOWWWW