Dispatcher: Provide support to customize Dispatcher behaviour.

WaylandDispatcher has logic to dispatch events in single and
multi process mode. This is fine but making it hard to fix or
optimize things particular to a use case.
i.e. gpu-process/browser process.

This CL introduces WaylandDispatcherDelegate interface. The
idea here is that dispatcher will use this internally to
handle events. The interface can be extended to customize this
behaviour of dispatcher. Follow up patches introduce
GpuProcessDispatcherDelegate and BrowserProcessDispatcherDelegate.
These implementations will be used to customize the event handling
behaviour of Dispatcher in gpu and browser process respectively.
WaylandDispatcherDelegate: Support for sending messages via IPC.

GpuProcessDispatcherDelegate extends WaylandDispatcherDelegate
and implements the necessary support for dispatching events in
GPU Process via IPC. The logic has been copied from existing
dispatcher class.
WaylandDispatcherDelegate: Support for dispatching events in BrowserProcess.

BrowserProcessDispatcherDelegate extends WaylandDispatcherDelegate
and implements the necessary support for dispatching events in
Browser Process. The logic is copied from existing dispatcher class.
Delegate: WaylandDispatcher should use WaylandDispatcherDelegate.

Refactor WaylandDispatcher to use internally
WaylandDispatcherDelegate. OzoneDisplay is responsible for setting
the correct delegate to WaylandDispatcher.