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