Optimize injection of Provider<> objects.
Change the new/delete benchmark to reduce the impact of timing overhead on the benchmark result.
Use virtual destructors for classes in the benchmark.
First implementation of binding compression; reduces injection time by ~35% when using virtual destructors.
Use a CandidateValuesRange struct instead of a std::pair, in SemistaticMap.
Change the signature of the 'create' operation of various bindings to only return the created object, and to set any deleter itself if needed instead of returning it. Saves ~20% of injection time.