Converted runner.c to C++

Used std::max, eliminated unused variables, used const char *, used
size_t instead of int, declared constant variable of type float
rather than type double.

Moved declaration of cr_old to where it is used.

Renamed variables relating to automated nstlist choice to better
reflect what is actually going on.

Added some assertions to help static analysis and humans understand
what is going on. This is a problem because static analysis can't
reason correctly about cr and fr while we continue to pass them
everywhere as non-const.

Change-Id: I1afe0c5e96c0ccdc6b46f772f8746402af471234