Use "bounding-client-rect" component

This gives a slight performance boost, since before we would potentially be calling `getBoundingClientRect()` twice.

Now the TextRectangle is being re-used, and works with more types of Nodes. So now `component/tip` should be compatible with regular DOM Elements, TextNode instances and Ranges.

Also removes a `TODO: extract this into a standalone module ` comment from the now-deleted `dimensions()` function.