Provide the callback for asynchronous requests as a parameter

Instead of registering and unregistering the callback.

Keep a list of pending requests keyed by the correlation id, and execute
the callback when tre response comes in.
When the callback owner goes away, remove the it's callbacks from the
peding requests. No longer needs to keep track of implicitly obsolete
requests.

This enables the possibility of having different callbacks simultanously
for the same owner (activity), and same data type. E.g. needed to down-
load all songs of an item.

This also enables us to use generic handlers in CliClient and generic
callbacks in the item lists. Only need to override, if special actions
are required.

Signed-off-by: Kurt Aaholst <kaaholst@gmail.com>