Lots of work on abstracting the benchmarking libraries.

Also added standard command line parsing to the benchmarking library.
Added number formating to the timer library for prettier output.