Code cleanup, edited tests, and updated benchmarks

should be `toFactory: (...) => ...`, same below 
should `inject: [...]` be added here also ? `toFactory(a0, a1, …) => new Instance(a0, a1, …), inject: [aoKey, a1Key, ...]`