Add async functionality

Add the ability for Kraken to be called asynchronously.

If you call `async` on the `Kraken::Client` object any further calls to the service will be execute asynchronously.  A block passed to the `url` or `filename` method will be yielded the response object from Kraken. To revert back to synchronous calls you can invoke the `sync` method.

Also, adds the `callback_url` convenience method, which will set a callback url for all further invocations of the service from a given client.

This shouldn't break any backward compatibility - it just adds the fluent style interface to the client - making it easier to queue up a bunch of images with identical settings in a "fire and forget" way.