se: Add support for search back-ends

This patch implements basic support for search back-ends. Each back-end,
or "algorithm", is represented by a HTML div where it can display output
and configurable options, and a dictionary. Example dictionary:

  'my-alg': {
     data: {},
     init: function(history, data, dimen) {},
     predict: function(history, data, dimen) { return [0, 0] }
  }

Each back-end has a "data" dictionary for storing search state, and must
implement two functions: "init", which is called once when the algorithm
is initially selected for use, and "predict", which is called every time
a new prediction on the best move is made. Each function accepts an
array of historical events (pairs of inputs and outputs in chronological
order), the data dictionary, and the dimensions of the search space.

This patch also provides implementations for the random and exhaustive
search back-ends.
se: Add a "Measurement Noise" slider

This is non-functional at the moment.