Use the DOM rather than XPath to detect clickable elements
Treat area elements as being at the point of their img element
Use element.readOnly instead of getAttribute "readonly"
Inline DomUtils.getClickableElements
Simplify finding clickable elements
Combine rectangle calculation and clickable element detection
Try to make image map rectangles work better
Don't show link hints for offscreen image maps
Remove redundant array conversion
Stop ignoring clickable opacity: none; elements

Some websites (notably Facebook) use `opacity: none;` to show an image in
the place of a less-customisable element (eg. an `<input type="file" />`).
To not show link hints for such transparent elements is confusing and
often the wrong thing to do.
Unify two loops into one
Remove overlapping rects from link hints
Add link hint support for jsaction event listeners

This was adapted from PR #1316, commit
846a19efe51bfc639ae1ee84e18a5f2d3e12aaff
Complete a partially written comment
Move rect functions to their own file
Add tests for lib/rect
Make some minor changes/tweaks to rect handling in dom_utils
Use Rect.copy instead of literal member by member copy of a rect
Split textarea and input detection in link hints
Improve comments for LinkHints.getVisibleClickableElements