sketch of AB testing

This is a minimal client-side AB testing implementation to poke at and experiment with. I tried not to make too many decisions about what features should or shouldn't be included and focused on the mechanics of making it functional.

## Points of interest

* `AB` is a singleton initialized in `app-start.js` and required by any file that needs it
* the browser loads (from local storage) or creates a random `roll` variable for use in "anonymous" tests
  * `roll` allows consistent choices between browser sessions
* experiments are delivered to the browser via the `/config` endpoint
  * this was only for my convenience to minimize the diff but it *may* be a good place anyway(?)
  * experiments default to `enabled` if the name isn't found in the config
* experiments only define a `name` and an `percentEnabled` for now
* results are reported to the `/metrics` endpoint
  * also chosen to minimize the diff. It may or may not be where we want the data sent
  * the `ab` data only includes results for experiments that were activated by an `isEnabled` check
  * the results only include whether an experiment was enabled for now

So, lots of choices still to make, but this sort of does something ;)

f? @shane-tomlinson @ckarlof
`_data` is meant to contain the data reported back to the server about the experiment. Here it only keeps track of which experiments were "activated" by the running code. That way experiments that were "not in play" for the session don't affect the reporting. I imagine we might want to report other data per experiment in the future.

Maybe a better name for this would be `reportingData`?