New way of defining benchmarks with more flexibility

- separate experiment from workbench and measure protocol
- make everything looks like Unit Tests
- no need to rerun an experiment to extract multiple statistics
- provide various prebuilt statistics, protocol and dataset constructors