Sped up test query setup.

Moved out all the query string formatting out of the loop which gets
executed for every query into a 'prepare' method - specifically,
json.dumps() doesn't get called for every query execution. Function
'rands()' is used to add a random string for each query - it is pretty
fast (tried it with timeit()). So all in all the overhead of preparing
the queries is neglegible.
CLI argument 'period' changed to 'observations'.

So now you get to specify the number of observations you want in the
course of the benchmark, as opposed to the period at which they occur.
This is more consistent witht the way I have been using it.
Added sorted match query to the benchmark.

Analysis is still mostly manual (what queries are there, how results get
grouped - adding new query to the benchmark should not require any
changes to the analysis code - this should be inferred from the
benchmark record itself).
analyze.py updated with the 'dump' option.

This allows benchmarks and their observations to be dumped as curl
commands, so that they can be saved and restored (of the es index goes
away or whatever).