fix(tooltip): correctly bind/unbind events

Refactored events binding/unbinding code into separate methods to make it easier to identify events used.
Fixed unbinding of keyboard events when binded to 'element' instead of 'tipElement'.
Changed auto-close related event to not use anonymous handlers, so we can correctly unbind from the events.

Follow up to @bloveridge PR #1264, I took a closer look at 'tooltip' and refactored the code a bit.