Add NintendoDataFetcher for Switch gamepads

Nintendo controllers are complicated enough that they deserve their
own data fetcher. Initially, Nintendo Switch devices will be supported.
These are HID devices but do not behave like normal HID gamepads.
NintendoDataFetcher uses the HID backend to perform initialization and
read calibration data from the device.

The data fetcher also coordinates the creation of composite gamepads.
A pair of matching Joy-Cons will be automatically associated to form a
composite gamepad. A NintendoController may represent a single device
like a Joy-Con, or it may represent a composite input like a pair of
matching Joy-Cons.

NintendoController is partially implemented and lacks any of the HID
communication logic, which will be added in a followup CL.

BUG=801717

Change-Id: Ifae78ea09d0070b662e97ae8ca1ced4d5f446ed5
Reviewed-on: https://chromium-review.googlesource.com/c/1418651
Reviewed-by: Ovidio de Jesús Ruiz-Henríquez <odejesush@chromium.org>
Commit-Queue: Matt Reynolds <mattreynolds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#625060}
11 files changed