Fail in friendlier way on circular dependencies

When the injector is asked to resolve a dependency tree with circles, it currently fails with a SystemStackError.  This rescues that error to make it more clear what the problem is.  A cleaner solution might be to precompute the dependency tree and detect circles before trying to instantiate everything, but this is a start.