Avoid response misrouting in case of stale pending requests

If an enumerate-connected callback is received then the device was just
started and all pending request that exist for this device are stale. The
device can never have received the requests and will never respond to them.

If a new request is received then it is added to the end of the global
pending request list. If the response for this request arrives then one
of the stale pending requests will match it. This can result in misrouting
responses. To avoid this drop all pending request for a given UID if an
enumerate-connected callback is received for that UID. This ensures that
there are never stale pending requests.

Do the same for an enumerate-disconnected callback. This is not strictly
necessary, but after the device got disconnected the pending requests for
it will never get a response. This stale requests just waste space in the
pending requests list and can be dropped.