Lazy-loading image textures (memory management)

First commit of memory management for image objects, in both canvas2d
and webgl renderers. Overview:

- only local images are lazy loaded; remote images and data URIs work as
before and load their textures immediately, and ImageData and canvas are
not affected
- lazy loaded images fire their load event immediately and 'complete'
always returns true, without loading the texture
- added EJDrawable getTexture, which loads the texture blocking main
thread if it is not yet loaded (for canvas and imagedata just returns
self.texture)
- added EJDrawable releaseTexture, which releases the texture if it was
lazy-loaded (for canvas and imagedata is a no-op); in WebGL mode, after
a call to texImage2D, the original image texture is released to avoid
wasting memory by having the image loaded twice or still loaded after
deleting the WebGL texture
- image caches its size so even after releasing the texture the width
and height can be read without re-loading anything

caveats:
- lazy-loaded images skip the cache, mainly because I'm not clear how it
works, and can therefore load the same texture twice if two images are
created with the same src. However in the Construct 2 engine this never
happens.
- canvas2d mode needs to implement a least-recently-used (LRU) eviction
algorithm in case of running out of memory, like real browsers do. webgl
relies on calls to deleteTexture, but as the game moves through levels
in canvas2d mode everything will gradually accumulate in memory and
possibly crash towards the middle/end of large games. I am not familiar
enough with Obj-C/iOS dev to know how to do this, but it's a simple
concept: if out of memory, call releaseTexture on the last recently used
drawables until the new texture can be loaded.