i965: Open i915_oa perf event to setup OACONTROL

Programming OACONTROL via LRIs currently has a number of limitations:

* It doesn't support per-context counting
* We are required to enable and disable OACONTROL for every BB we want
  metrics for. (This is enforced by the drm command parser to stop
  clients from snooping on other process contexts)
* Programming the OA really involves more than just the OACONTROL
  register; there are lots of CEC/Custom Event Counter registers,
  STARTTRIGGER registers, OABUFFER, the STATUS registers, and
  for some use cases it is necessary to make 100s of NOA configuration
  writes too. It would not really be practical to extend the drm
  command parser to let us configure all of these.
* We can't enable periodic snapshots into a circular OA buffer
  since that requires us to pin a gem buffer, and that requires
  root permissions.

What this patch aims to do instead is leverage the "i915_oa" perf event
driver, as a way to configure the Gen Observation Architecture.

The first advantage this will have is that it also programs the CEC and
the STARTTRIG registers to setup the B0 counter to represent the gpu
clock (required to normalize many of the A counters) and workaround a
Haswell counter threshold enable bug.

XXX: Issues:
Reports are being lost sometimes, and although the perf driver is able
to detect this via the OASTATUS1 register we don't have a way to convey
this information to userspace except for the fact that userspace will
notice that the expected report-id hasn't been written.

This doesn't currently take advantage of being able to read periodic
counter snapshots from perf, which could be used to detect counter
wrapping, for example, but this is quite unlikely to be a problem to
start with, especially with the current "bookend" reports we request.