Cancel timers on object destruction in the shadow. #4127

When the RemoteResource and BaseShadow objects are deleted as part of
reusing the shadow process, ensure that all related timers are canceled.

If the shadow becomes disconnected during job cleanup, it can be given a
new job after the reconnect timer is registered but before the timer
fires. In this case, the relevant RemoteResource object has been deleted
and the shadow crashes when daemonCore tries to invoke the reconnect
callback.