Cleanup refs to callback in Handle/TimerHandle on cancel
Cleanup refs to callback in Handle/TimerHandle on cancel

Currently there's a lot of potential to create reference cycles
between callback handles and protocols/transports that use them.
Basically any bound-method has a potential to create such a cycle.
This happens especially often for TimerHandles used to ensure
timeouts.

Fix that by ensuring that the handle clears the ref to its callback
when the 'cancel()' method is called.

1st1/uvloop,MagicStack/uvloop,MagicStack/uvloop