feat(injector): implement a different approach to injector scopes

An easy way to review this is to read the tests and see if that's what we want