Handle selection data source comes from clients.

The CL partially implements the data flow of setting clipboard data from
exo clients.

 1. DataDevice receives a selection event with DataSource from the client
 2. Seat requests DataSource for bytes, updates the clipboard with
    obtained bytes, and keeps holding DataSource instance to cancel it when
    new clipboard data is set.

Follwing CL implements the DataSource part which actually reads bytes
from FD.

Bug: 773978
Test: exo_unittests
Change-Id: I0cde5755dd1ecd28d24a5b17f90590b9a70d4773
Reviewed-on: https://chromium-review.googlesource.com/792410
Commit-Queue: Daichi Hirono <[email protected]>
Reviewed-by: David Reveman <[email protected]>
Cr-Commit-Position: refs/heads/master@{#520420}
8 files changed