package the common test-harness modules into a library

This avoids recompiling the modules for every test program, and means that dependency changes need only happen once.

This also handles the common command line arguments, such as choosing the backend or displaying the help message. The library also becomes the only component to directly import the individual backend implementations.
move the library into an appropriate namespace

If a user installs the package, we don't want to pollute the top level package directory with modules that are clearly internal.
ray: update to use library test harness
fix command line option for generating criterion report
wibble
crystal: update to use library test harness
mandel: update to use library test harness
mandel: add version of solver based on complete unrolling

TODO: add option to use this method
wibbles
mandel: add another sample image
A module for efficiently generating random trees
lib: run a bunch of tests
nofib: update to use library test harness
git mv regression_test.sh utils/
retrieve the reports for multiple benchmarks

This is done via a temporary raw data file, but is actually the way that criterion does it as well.
remove old dead makefile
smvm: update
canny: update
fluid: update
nbody: update