Add support to create window of different shell types.

Currently, we always hardcode the window to be of TopLevel type.
This patch makes changes so that the display doesn't assume anything
and caller is responsible for explicitly defining the shell type of
window.
Gardening: Update to latest revision.
WaylandWidndow: Remove unecessary switch/case block

The checks for shell surface types are already done in UpdateShellSurface