Add benchmark arguments without leaking memory
The previous version of BenchmarkInSitu added arguments to its argv list
by using strdup. However, this method will leak memory, which is not
great. Replace this with a safer mechanism that will properly delete
memory at the end of the program (and satisfy any memory analyzers).
This also fixes a warning from MS about strdup being deprecated.