(Binary Analysis) Clone detection 2d-split optimization
(Utility) Added parallel sort and stopwatch

Multi-threaded sort:
   #include "ParallelSort.h"
   using namespace rose::ParallelSort;
   std::vector<Thing> values;
   bool isSorted(const Thing &a, const Thing &b) {...}
   size_t nthreads = 10;
   quicksort(values.begin(), values.end(), isSorted, nthreads);

Stopwatch:
   #include "Stopwatch.h"
   using namespace rose;
   Stopwatch timer;
   do_something_long();
   std::cerr <<"that took " <<timer.stop() <<" seconds\n";

Sort testing and timing:
   $ cd tests/roseTests/utilTests
   $ make testSort.passed
   $ cat testSort.passed
(Clone Detection) 2d worklist split is multi-threaded

The rewrittten algorithm also does less copying than the old one.
These two changes together increased performance on my machine
from about 1 hour to about 5 minutes on a list of approximately
100 million function pairs split into 64 batches.