DI 2.0.0

This magically works right now, amazingly, because:
if `id >= _instances.length`, we `return _instances[id] = parent.getByKey(key)`
While that seems like an array error, `parent.getByKey` is evaluated first. Since the parent must be created before the child, its `_instances` has length less than or equal to child, and also fails the if statement. This continues until the root at which point `NoProviderError` is thrown.
I agree though, the way the code is written looks like it would error and I had to stare at it for quite a while to figure it out. Will fix.