ivi-shell: ivi-shell.c, improve destruction process

- Make several destruction process as sub-method: destroy_shell_surface
- Register destroy listener to weston_surface->resource.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
clients: ivi-shell-user-interface.c, Remove unnecessary memory allocation and pass by value.

> A member of type wl_list should usually not be a pointer. There is no
> need to malloc(sizeof(struct wl_list)) here AFAIK.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>