Rename input.{c,h} to input_focus.{c,h}
Add focus change signal
Add shell_data and shell_destructor to surface

This is useful if a shell wants to change the focus when a focused
surface gets destroyed.
Move focus destroy handling to input_focus

Now that shells can have their own destructor guaranteed to go last, we
don't have to worry about the focus trying to unset and change to
something else at the same time (if a shell changed keyboard focus when
the old focus got destroyed).