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.