i965: Expose normalised OA counters setup via perf

This first thing this patch does is switch from using LRIs to configure
OACONTROL to opening an i915_oa perf event to setup the counters.

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 does instead is leverage the "i915_oa" perf event
driver, as a way to configure the Gen Observation Architecture.

The first advantage this has 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.

Since we now have access to the gpu clock counter, this patch also
updates the way that we describe counters to be able to have higher
level counters derived from the raw OA counter data, and updates
how we accumulate the deltas between bookend snapshots so that
we can now report normalised, high level counters that can be
intuitively used by developers profiling their applications.

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.