Revoke object URL to avoid ImagePlayer's leak. Fix #706.

From the [Sample Code](https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications#Example.3A_Using_object_URLs_to_display_images) for MDN, we could release object url right after image loaded to avoid leak.
This will always result in a resolved promise, even if p is rejected.
For example:

    new Promise(function(resolve, reject) {
        reject();
    }).then(function() {
        console.log("1");
    }, function() {
        console.log("2");
    }).then(function() {
        console.log("resolved");
    }, function() {
        console.log("rejected");
    });

Will print "2" and "resolved"