feat(tooltip): add tooltip component

Closes #354. Closes #81.