refactor(injector): rename humanize into stringify
refactor(facade): instantiate a fixed length array
refactor(injector): change reflector to collect the resolving path only when an error occurs
refactor(injector): use @CONST to create the Inject annotation
feat(injector): implement async dependencies
feat(injector): handle construction errors

- Detect cyclic deps
- Handle initialization errors
feat(injector): handle in-progress async construction
feat(injector): implement InjectLazy
feat(injector): handle async cyclic dependencies
feat(injector): change injector to show the full path when error happens in a constructor (async)
refactor(injector): remove DIError
feat(facade): add bool type
refactor(injector): add bool and int annotations
refactor(injector): add @FIELD annotations to Key and Dependency
refactor(injector): cleanup
refactor(injector): uses one instance of reflector instead of creating a new instance every time
style(reflector): formatting
refactor(reflector): cleanup