Allow custom callbacks for client requests

This will allow us to pass custom callbacks to client responses. They're called with arguments that are the result of the client's default callback.
If we HAVE to reserve some keyword, i would propose a dict like `options` or `options_` which can have `callback` as one of the keys. This will help in not polluting more keywords if needed in future.