DRWH: Avoid un-necessary IPC calls during window creation.

We send Active state change events over IPC even before Window is made
visible. This CL changes so that this IPC message is sent only if the
window is visible.
IPC: Add support to handle WindowResize event coming from WaylandServer.

This CL adds initial support needed to send and handle Resize event
initiated by WaylandServer over IPC to DRWH. This will be taken into
use in a follow up patch.
DRWH: Explicitly restore Window state when exiting from FullScreen mode.

Currently, if shell (in WaylandWindow) is of type FullScreen, we set it to
TopLevel and vice versa. However, we also need to deal with various
combinations like Maximize->FullScreen->Maximize->Normal, a frameless window
in future etc. This CL changes it so that WaylandWindow doesn't make any
assumptions and all state changes need to be explicitly set.
WaylandWindow: Replace SetBounds API with Resize.

We never set position of WaylandWindow but only the size attributes
(i.e. Width and Height). However, SetBounds accepts Rect as the function
parameter and we end up passing redundant information (i.e. Position) which
is always ignored. This CL replaces SetBounds API with an Resize API which
accepts only Width and Height.
FlushDisplay after any change to ShellSurface.

With latest changes, we only poll for incoming events and Flush Display
in main thread as needed. This CL adds support to Flush Display everytime
we change ShellSurface type, title or destroy it.
WaylandWindow: Replace unnamed Enum type with named type.

We declare an Enum (Shell) to define different shell types and have an
unsigned integer (ShellType) to represent the same. We should define the
Enum as ShellType and get rid of unsigned integer.
ShellSurface: Add support to handle HandleConfigure call back.

This CL adds needed support in ShellSurface to handle
HandleConfigure callback coming from Wayland. In this case, we send a
message to DRWH. DRWH is responsible to handle any Window Resize.

Fixes #157
Move WindowChangeObserver to ui\events\

We have all event related interface definitions and implementations under
ui\events. This CL moves WindowChangeObserver to ui\events too.
Fix Asan Build.

Add missing Virtual keyword for destructor in WaylandInputDevice.
WindowStateHandler: Introduce RemoteStateChangeHandler.

OzoneDisplayChannelHost handles both sending and receiving of IPC messages
from GPU Process. This CL introduces RemoteStateChangeHandler which
implements needed support for Sending messages from Browser to GPU process
over IPC. The implementation is a copy from OzoneDisplayChannelHost except
for the usage of IPC:: Channel. We rely on BrowserGpuChannelHostFactory to
establish the GPU Channel and BrowserChildProcessHostIterator to send
messages to correct process type. RemoteStateChangeHandler will be owned by
OzoneDisplayChannelHost. RemoteStateChangeHandler will be taken in to use
in follow up patch.
DisplayChannelHost: Take RemoteStateChangeHandler in to use.
DisplayChannelHost: Remove code related to sending messages over IPC.

RemoteStateChangeHandler is now responsible for sending messages over IPC.
This CL removes related functionality from DisplayChannelHost.
ChannelHost: Set ChannelHost as handler for control messages with BGCHFactor

OzoneDisplayChannelHost, sets itself as filter with GpuProcessHost and
listens to any incoming messages from GPU process. This approach works fine
but we seem to be using the wrong class to do this.

BrowserGPUChannelHostFactory provides the needed API interface. This CL
makes changes to replace GPUProcessHost and IPC::ChannelProxy::MessageFilter
usage with the API provided by BGCHFactory. Most of the changes are based
on similar functionality provided by BrowserCompositorOutputSurfaceProxy.

Fixes #165 Fixes #24