Absolutely eradicate absolute selection coordinates

Split getSelectionRect() into getClientSelectionRect() and
getRelativeSelectionRect(). The former returns a rect relative
to the viewport, the latter is relative to the surface.
Previously, getSelectionRect() would return absolute coordinates,
but we weren't actually using those directly anywhere, each
caller would perform its own translations.

Also make these functions return a real rect-like object
(with top, bottom, left, right, width, height) rather than
a Rangy-inspired { start: { x:.., y:.. }, end: { x:.., y:.. } }
style object.

Use the relative version in the context and the client version
in the toolbar. This allows us to get rid of translation
code in both places.

Bonus:
* Rewrite the toolbar's keyup handler to actually make sense
  and actually work correctly
* Centralize the iOS7 getClientRects()[0] hack in
  ve.ui.Surface#getBoundingClientRect
* Compute ve.ce.Surface's this.$window in a saner way

Change-Id: If1dcf159696f287cbfcd17c7bff51ad5913764d0
Merge "Absolutely eradicate absolute selection coordinates"