Reland "Parse HID report descriptor for report info"

This is a reland of 6a235ad71f5f34c4b43a5c6be4a78c96cb748921

Original change's description:
> Parse HID report descriptor for report info
>
> The previous HID report descriptor parser was designed to only
> extract the maximum size of each type of report and did not preserve
> information about the individual fields within a report. This CL
> adds a new parser that builds a hierarchical representation of the
> reports supported by the HID device.
>
> BUG=890096
>
> Change-Id: I4ac3bf883a843bec00576bfad78958d42f53abc7
> Reviewed-on: https://chromium-review.googlesource.com/c/1257897
> Commit-Queue: Matt Reynolds <mattreynolds@chromium.org>
> Reviewed-by: Daniel Cheng <dcheng@chromium.org>
> Reviewed-by: Ovidio de Jesús Ruiz-Henríquez <odejesush@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#626816}

BUG=890096

Change-Id: I103b48b1c04650c1c33452bd7bc6110f39d6b732
Reviewed-on: https://chromium-review.googlesource.com/c/1443499
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Commit-Queue: Matt Reynolds <mattreynolds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#627570}
17 files changed