OzoneDisplay/singleprocess: Use Dispatcher to poll for wayland events.

So far, in single process mode we used EventFactoryWayland and
dispatcher in multi process mode to poll for wayland events.
This CL changes it so that we use dispatcher in all cases.
Events: Remove EventFactoryWayland class.

OzoneDisplay doesn't use EventFactoryWayland to poll for wayland
events. This class is removed with this CL.
Dispatcher: Move dispatcher from OzoneDisplay to WaylandDisplay.

Dispatcher is responsibile to poll on Wayland display fd and
flush/dispatch Wayland events. Also, dispatcher should exist only
if WaylandDisplay exists. Thus, it would be useful if
WaylandDisplay manages the ownership of WaylandDispatcher.
This CL makes changes in this direction.
Dispatcher: Refactor dispatcher.

Dispatcher should be only used to poll on wayland display fd in a separate
thread and nothing else. This CL Remove apis related to tasks. Now, Dispatcher
starts polling with a call to StartProcessingEvents and stops polling with a
call to StopProcessingEvents.
Wayland: Pass wl_display instead of display fd to Dispatcher.

Dispatcher is responsible for polling on the display fd and
flushing wayland events. Dispatcher takes fd and queries wl_display
from WaylandDisplay every time. It's bit confusing from the api's
as to how Dispatcher maps fd with wl_display (to flush etc). It would
make it clean, if wl_display is passed during construction phase
instead of fd. This CL makes necessary changes in this direction.
Rename WaylandDispatcher as WaylandDisplayPollThread.
DisplayPollThread: Avoid data race issues.

DisplayPollThread uses member variables like active to determine when to stop
polling. This variable is set in Main thread and read from the worker thread
and leads to potential undefined behaviour. To avoid data races, we use a
WaitableEvent to signal when the polling needs to be stopped. Also the epoll
creation and deletion has been moved to worker thread completely.
PollThread: Add error checks and print error log.