refactor(injector): switched to using reflectedType, moved most of reusable code into Injector
chore(benchmark): moved benchmark code around, added script to run it
chore(benchmark): split benchmarks into separate files
chore(benchmark): fixed runner
chore(tests): running benchmarks as part of the tests
perf(injector): speedup injector creation

Before
------
VM:
ModuleBenchmark(RunTime): 3.963142772218369 us.
DynamicInjectorBenchmark(RunTime): 242.92481476982874 us.
StaticInjectorBenchmark(RunTime): 98.62419251442378 us.

dart2js:
ModuleBenchmark(RunTime): 30.26176426085641 us.
DynamicInjectorBenchmark(RunTime): 2326.7441860465115 us.
StaticInjectorBenchmark(RunTime): 665.335994677312 us.

After
-----

VM:
ModuleBenchmark(RunTime): 4.427942976950343 us.
DynamicInjectorBenchmark(RunTime): 258.1977794990963 us.
StaticInjectorBenchmark(RunTime): 78.25032278258148 us.

dart2js:
ModuleBenchmark(RunTime): 31.10371533879722 us.
DynamicInjectorBenchmark(RunTime): 1467.351430667645 us.
StaticInjectorBenchmark(RunTime): 372.9951510630362 us.
Merge pull request #34 from pavelgj/refactor

chore(merge): injector refactoring