Greatly simplify ve.ce.Surface#getSelectionRect

We were calling getBoundingClientRect(), and if any of the
coordinates we got back was zero, we'd measure the cursor position
manually by inserting a <span>, then locating it.

There were two problems with this. First, it broke IMEs because
they don't like DOM manipulation. Second, we weren't actually using
the result of getBoundingClientRect() AT ALL, ANYWHERE: we were only
checking it for zeroes, then throwing it away. To get the actual
return value we used get(Start|End)DocumentPos(), and it turns out
those work just fine even in cases where getBoundingClientRect()i
gets confused.

So, instead, just use get(Start|End)DocumentPos() directly, and get
rid of the call to getBoundingClientRect() and all the DOM manipulation
recovery code. The only case I observed where get(Start|End)DocumentPos()
don't work was in Firefox when the address bar is focused on load; then
they sometimes throw exceptions. But in that case we can get away with
returning null, which we already do if the range list is empty.

Change-Id: I9cf97244a1c80754d2844cb77ce101d3afa6bf5b
Merge "Greatly simplify ve.ce.Surface#getSelectionRect"