Add support to record parent child relationship in DRWH.

This is in preparation for multi window mode. The patch
adds support for recording the parent child relationship.
Most of the patch is taken from the X11 version. This is
useful in cases like ensuring that the parent window closes
all the child windows during it's destruction.
Delete associated window when DRWH is destroyed.

This is in preparation for supporting multi window mode.
Currently, we always assume single root window and it is destroyed
when browser is closed. We would eventually want to support multi
window mode in the form of popups or additional top windows. This
patch adds support to delete the window once DRWH is closed.
Add multi-window support.

This patch adds multi-window support. With these changes,
Menu should work and we are able to launch more than one
browser window. This patch also introduces WindowChangeObserver,
an interface which can be used by clients to observe
for Window state changes. This is extremely useful in
case client is interested to track when a particular
window receives focus or when an input device enters
a window. DRWH implements the interface and gets
notified appropriately.