pointer: Forcibly steal pointer focus when the compositor has a grab
pointer: Sync the focus surface instead of calling set_focus directly

set_focus is really meant to be an internal function, and
sync_focus_surface should be able to be called at any time and get
things right.
pointer: Actually do change the focus during window ops

Whenever the compositor takes a grab, we're supposed send leave/enter
events to the current surface, which makes sense, as the compositor
has stolen the pointer from the client.

I forget why I added the special case in the first place, but it's
likely a bug that's since been fixed.

This actually fixes a bug: it prevents the need to double-click on
X11 application titlebars when grabbing them.
display: Call grab_op_ended after actually ending the grab op

Otherwise, we'll still think we're resizing the window when we
send out the configure, causing apps that care about that to get
stuck in that state.