webelem: Get rid of functools.wraps/functools.update_wrapper.
webelem: Refuse to wrap a wrapper in WebElementWrapper.
webelem: Make it possible to use is_visible with unwrapped elements.
hints: Wrap elements after checking is_visible.

Wrapping thousands of elements is really slow (>3 seconds for hinting on a
reddit page, because we wrap ~2500 elements with 50 methods each), so we try to
filter the elements first before wrapping them, as the visible elements will be
much less.
webelem: Avoid unnecessary ::geometry calls
Merge branch 'webelem_perf' - huge hints/webelement performance improvements.