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
Can getRandomValues set rand[0] to `0`? If so, the user will re-roll the next time _getRoll is called.