Store version in results; display in report.

Also refactored out results file reading and writing into the RunResults
class.  That's where all the batched-writing to the results file in a
background thread takes place.

The version is not stored in ssbench._version as a tuple of ints and
ssbench.version as a string.  The version in setup.py comes from the
ssbench/__init__.py file.

After adding the fancy stream-results-to-disk code, the RunState object
was still holding on to all the results in RAM (doh!).  Fixed that.

fixes #50.