Create a typedef for the image type to be loaded

This will allow an ImageLoader to be used as an abstract type `Loader<LoadableImage>` instead of its concrete class type.

This is useful in places where an ImageLoader implementation needs to be swapped out with a different one, eg:

````
class Image
{
    var loader:Loader<LoadableImage>;
    
    public function new()
    {
        loader = new ImageLoader();
    }
}

class CachableImage extends Image
{
    public function new()
    {
        loader = new CachableImageLoader();
    }
}

class CachableImageLoader extends ImageLoader
{
    //...etc.
}
````