Simplified Benchmark API

Benchmark system have been slimed down by using less virtual interface
and more Concepts. Benchmarks are now running Experiment under a given
protocol of measure. Each run is then later processed by various Metrics
that exploit the raw measures. Existing benchmarks have been amended to
use this system.

Changes includes :
 - Simplification of the experiment interface require dot be implemented
 - More metric and statistics including speed-up between experiment or Gb/s
 - Statistics now use boost::accumulator for computations and are computed on
   a single set of samples
 - Benchmarks now support custom command line arguments retrieval so a single
   benchmark executable can be run with variable parameters without recompilation
 - Protocols now allow for time-based looping of the experiment or fixed number of
   iterations.
 - Timing overhead is not required anymore
 - Benchmarks themselves looks more like a regular functions and can be
   controlled in a finer way.
some fixes to static_fft benchmarks so that Accelerate benchmark builds
use aligned allocator for output in process_functor
Fix copiability and size of Apple FFT experiments
Amend basic bench demo to fit in the new median limit
Discriminate between mutable and immutable experiment

Whenever an experiment may mutate its input, we need to perform
benchmarks on copy of said experiment, contrary to the classical
case.

This patch allow to specify if an experiment is mutating its entry
by passign it as a reference type to the various run_*<Experiment>
functions.
Modify median behavior

If median statistics is called for less than 3 samples, use mean
instead as exiting as a failure is a bit steep.
Include fixes in protocols
Add a until protocol that stops at either duration or iteration

fix some benchmarks that were failing before that.
Fix small oversight in polynomial benches