This class implements all the magic of resolving namespace references within a local scope.
Instances of this class, are only created in {@link NamespaceDirectiveResolver#resolveNamespaceReferenceInDirective(ICompilerProject,UserDefinedNamespaceReference,INamespaceDirective)}.
Instances of this class maintain state as we walk through the namespace definition directives in a lexical scope.
To resolve namespace references in a lexical scope we walk through all the namespace declarations and use directives in source file order. Each declaration or use directive has its state applied to an instance of this class. When we encounter the directive that contains the reference we want to resolve we then use the state accumulated in this class to resolve the reference.