ivi-shell: Add keyboard grab

This commit does not specify what the keyboard grabs do. That
is implemented in a later commit.

Signed-off-by: James Thomas <james.thomas@codethink.co.uk>
ivi-shell: Implement SetKeyboardFocus

This commit implements ivi_layout_SetKeyboardFocusOn.

It also extends ivi-layout.h and ivi-layout-export.h to store
keyboard focus on a per-surface basis.

Signed-off-by: James Thomas <james.thomas@codethink.co.uk>
ivi-shell: Implement ivi_layout_GetKeyboardFocusSurfaceId

This commit implements the function
ivi_layout_GetKeyboardFocusSurfaceId.

Note: This function is not used by wayland-ivi-extension's
ivi-controller, so it has not been tested for correct behaviour,
only that it seems correct and compiles successfully.

Signed-off-by: James Thomas <james.thomas@codethink.co.uk>
ivi-shell: Fix layout surfaces not being destroyed

Signed-off-by: James Thomas <james.thomas@codethink.co.uk>