lib: Fix a few memory leaks
lib: Fix cancellation handling

We weren't checking for cancellation properly, not passing
cancellables to sub-routines, and not reporting cancelled calls
correctly.
lib: Fix extraneous reference that could lead to crash

The proxy we got from the tree model was already the extra
reference we needed. This makes sure that all additional
instances of the device (the ones not in the tree model)
are destroyed when cancelling a disconnect call.