Dependency injection container built on generic methods, with child scopes, lifecycle hooks and graph validation before anything is built.