Fix for a problem with Service Manager and Abstract Factories

When a abstract factory, inside the method `canCreateServiceWithName()`, try to check or retrieve a service that doesn't exists, a loop is created between the service manager and the given factory - see the test to get a better idea.

I'm not sure if my fix is a good one, but that's everything I can do. If someone else have a better approach to solve this, please feel free to fix it. :)

My idea was to skip the abstract factory when it, coupled with the canonical name, was the last one to be used.