Original benchmark PoC from pisha

THis Gather all the code propsoed by psiha on makign benchmark
faster and more stable to compile and run.
Introduce libnt2_unit

This patch provides a semi-compiled lirbary for handling NT2 unit
tests along with simplification of its dependencies and implementation.
Introduce libnt2_bench

This patch provides a semi-compiled benchmarking library that
streamlines the way we wrote benchmarks in NT2 and make benchmarks
definition simpler and more flexible.
Fix unit tests with modified behavior due to header rearrangement
Improvement in benchmark and unit test implementation

The benchmark system now use the fully compiled perform_benchmark
implementation. This remove the need of CRTP adn other template
machinery from experiment codes. Redundant code have been removed
and compliance with dynamic library support have been enforced.

The Unit Test code  have been optimized for better compile time
and automatic supprot for fusion sequence with numerical semantic.
Add value function

The nt2::value(x) function is a centralized specialisation point
that handles the generic extarction of numeric value from a generic
type. Its main use is to be able to treat any type with a numeric
semantic in a generic fashion in unit test.