Even if the end user throws away all references to the object, the handle must
be kept alive until the complete/load callback for the object is called. If the
handle is GC-ed before the callback is called, the handle is potentially
garbage, and we may crash.
The solution chosen here is to add all handles to a package-global set,
spotify._callback_handles, and remove them again when the callback is called.
The only downside I can see with this solution is that if not all callbacks
is called we have a growing set of handle references in
spotify._callback_handles, keeping both handles and the associated objects and
callback functions alive. Hopefully this will be easy to detect/debug through
simple checks of len(spotify._callback_handles).