Modify ImageProxy to allow for async URL handlers. The IP is passing a
callback as the 3rd parameter. Handlers can return undef and call this
when done if they need to eg. run an async web request.

Handlers which are expecting the calling IP to deal with the HTTP
request must return a scalar value.