Make [OriginTrialEnabled] and [RuntimeEnabled] mutually exclusive

The original intent of the [OriginTrialEnabled] extended attribute was
that it would be used as a drop-in replacement for [RuntimeEnabled]. The
implementation for enabling via origin trials includes a check for
runtime feature flags, so there is no need to use both attributes. When
implemented, a bug actually made both attributes required, in order to
generate the desired bindings code.

This CL fixes the bug so that the [RuntimeEnabled] attribute is not
required. An explicit check was added to cause an error if both
attributes are used on the same IDL member. The goal of the check is
avoid confusion - the intended usage of experimental features should be
clearer by marking with [RuntimeEnabled] vs [OriginTrialEnabled].

The implementation was also refactored, as the bindings logic was
mostly copy/paste reuse across attributes, constants, interfaces
and methods. The logic is more centralized now, similar to the approach
for the [MeasureAs] attribute.

BUG=586594

Review URL: https://codereview.chromium.org/1861433002

Cr-Commit-Position: refs/heads/master@{#386080}
22 files changed