Pass button/key structure to handler instead of just press

This way, we can make the start_interaction/end_interaction in
libswc/window.c more symmetrical.
window: Use button given in handler when calling the original handler

When a button is released normalling during a client-initiated resize or
move, we can't (and shouldn't because we already have the button passed
as an argument) look up the button by serial, because this changes to
the serial used for the release event.

Instead, add an extra button parameter to end_interaction, and only look
up the button by serial when it is NULL (when we end the interactions
prematurely).

This fixes a crash for client-initiated moves/resizes.
pointer: Handle attach of NULL buffer

This prevents a crash when an application attaches a NULL cursor buffer.
compositor: Include hidden views in the list of views

Otherwise, if we want to show a window A that has a pending size change
above another window B, but we wait until we get the new buffer before
showing it, we could run into the case where window B was hidden before
we actually try to show window A.

So, rather than constantly inserting/removing from the compositor's list
of views, just keep every view in that list, and skip over the ones that
are not visible.
compositor: Look for the parent in the view list

This way, we don't have to keep track of the children list.