fix(tooltip): fix undefined element when triggering multiple times in fast sequence

Clicking multiple times fast on the dropdown button in docs was causing an exception because the element references were being cleaned up in 'hide' animation callback. When the show/hide calls were executed in specific timming, the 'hide' callback was being run after calling 'show' which caused the $isShown flag to be true but the element to be destroyed.

This checks if the tipElement is still the same in the hide animation callback before calling destroyTipElement. If it is not the same, it is because 'show' as already been called and recreated the tipElement, so we don't need to do anything else.

Datepicker also needed to check if picker was still shown when setting up events in a $timeout.