Added an experiments system along with a skip calls visualizer.

Each visualizer can contribute state to define the current experiment. Each experiment is plotted as a series on the replay frame time graph. Hovering over the graph shows more detailed information about each experiment for that frame.

At the moment, experiments are defined by the which shader programs are skipped in SkipCallsVisualizer. If something like ResizeContextVisualizer was added, it could add the new context dimensions to the state, so you could have experiments for the various arrangements of context dimensions and programs skipped.