Part3: RenderDevice Abstraction Refactor.
This is the third part of fixes for issue #969.

This change with the new image cache in RenderDevice will fix
problems reported on issue #972

- Added image cache implementation to RenderDevice,
  cacheLookup(), cacheStore() and cacheRemove() are added.

- Updated SDLRenderDevice to use the new image cache in base
  class. The cache is instrumented at load and free of an Image.

- Added helper loadTextureImage() to Utils, this will construct a
  filename to load noalpha or not, code migrated from ImageManager.

- Removed ImageManager completly now when we have a image cache in
  RenderDevice. Update all use of image manager to use the new
  loadTextureImage() util function.

- Added a few missing unref() of images to cleanup memleaks.