Do not pollute A/B testing data with dev/integration behavior

The `FEAT.APPLICATION_VERSION` flag will be set to `"development"` when running locally and `"integration"` for our e2e tests (or when running locally against the `compiled` build target), and to the sha of the version in use when deployed.

I take advantage of this to know when to avoid hitting the A/B testing backend and polluting it with meaningless data. Prior to this change, it was using the google analytics user id when available and the singleton user "tests" when google analytics was not on the page (i.e. in the non-compiled version of the page). This meant that at most one participant and conversion would be added during development, but integration tests could cause the app to trigger more.

I've moved my promise-based matchers out of the ng-hal-mock module to a top-level place within the app since they're almost always useful. This allows you to `ddescribe` or `iit` without worrying about whether `angular-hal-mock` is being required by that test before you use `.toResolveTo()`.

When disabled, the prxperiment system will always choose the first ("control") alternative unless it has been overridden. In development, use the overriding (`?prxp-force-[experimentName]=[alternativeName]`) to see the different alternatives.