This diff introduces a hook named `useTooltip` which is a hook that any tooltip can use (even ones we introduce in the future) and handles all the common core functionality for tooltips. To build this hook, I facotred out all the message tooltip specific code and left that in the `useMessageTooltip` hook and took out all the tooltip agnostic code