Reland "Update XRInputSource Gamepad to comply with SameObject requirement"

Fix failing android tests that caused initial commit to be reverted.
It appears as though the deep copy constructor was being hit by
some of the android tests, and that a segfault was being hit when
it attempted to copy the matrices.

Original change's description:
> Revert "Update XRInputSource Gamepad to comply with SameObject requirement"
>
> This reverts commit f9706cfd7b72c715456ff233e4d63e6d4025a931.
>
> Reason for revert:963529
>
> Original change's description:
> > Update XRInputSource Gamepad to comply with SameObject requirement
> >
> > The WebXR spec requires that the Gamepad object on an XRInputSource be
> > tagged as "SameObject."  The current implementation would allow for
> > the Gamepad to be toggled between null and present on the same
> > XRInputSource object as it currently is written.  This change exposes a
> > method "NeedsReCreation" as well as static helper methods (and a deep-
> > copy constructor) to allow for that re-creation to occur in a pattern
> > which could be re-used by 958019 if the spec requires those changes.
> > While this change adds an xr_browser_test to validate the blink code
> > that destroys/re-creates the object, the work to add a WPT test for all
> > of the same object properties is tracked by 960958.
> >
> > The exemption to audit_non_blink_usage was added because the xr module
> > was currently utilizing device::Gamepad, but since it was previously
> > wrapped in base::Optional, that usage was not flagged.
> >
> > Note that 955101 (currently tagged for 77) may relax/change this
> > requirement, but this makes the code compliant with the spec for M76.
> >
> > Bug: 960978
> > Change-Id: Ie36990f47e43c6df91af3fca06dd269a860a2a1e
> > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1606421
> > Commit-Queue: Alexander Cooper <alcooper@chromium.org>
> > Reviewed-by: Daniel Cheng <dcheng@chromium.org>
> > Reviewed-by: Bill Orr <billorr@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#659625}
>
>
> Change-Id: Ia5b987d3e4e5746d94a65cd2e8786012345b8c5d
> Bug: 960978
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1613557
> Commit-Queue: Alexander Cooper <alcooper@chromium.org>
> Reviewed-by: Alexander Cooper <alcooper@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#660016}

TBR=billorr@chromium.org

Bug: 960978
Change-Id: I2ca75926281b6a3782f2b350a2c9de1681df3774
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1613937
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Commit-Queue: Alexander Cooper <alcooper@chromium.org>
Cr-Commit-Position: refs/heads/master@{#660205}
8 files changed