Factor out measurement of everything as a standalone function

--HG--
extra : amend_source : edde65d70955f8ff8c3a3c3956ecad966e7dde37
Split Criterion.Monad into two modules

--HG--
rename : Criterion/Monad.hs => Criterion/Monad/Internal.hs
Move runBenchmark to the Measurement module

We also move it to the IO monad.
Initial version of getOverhead
Simplify, and use, getOverhead

--HG--
extra : amend_source : a35463c5adecc373a2ac14bbf456ce9ad5ba9278
Drop the noisiest of measurements from mean/stddev estimation

This massively reduces the amount of noise in the estimates, and
brings their accuracy into line with the OLS estimates.

--HG--
extra : amend_source : 2d8e838ada145467fd58276239f3925943e91a3c