Factor lookup() into two versions: one recurses through module Uses and the other does not.

Pulling apart the two versions allowed significant simplification of the version that does
not recurse through uses.  Further code consolidation is possible, by making the helper
routines return (or merely populate) a vector of symbols and pushing the error-reporting
logic into the driver routine.
Simplify lookup helper by pushing symbol selection into the top-level lookup() routine.

This factors the common decision and error-reporting logic out of the duplicate routines.
Simply gathering up a vector of symbols also simplifies the overall logic.
Error reporting now lists all duplicate symbols before aborting. (TODO: we may need to
provide file/line or other context.)
Fix some coding errors.

* alreadyVisited is now a reference, so use "." member access in place of "->".

* Reworked logic of the
    if (fn & fn->_this)
clause to obtain previous behavior and remove redundant else clause.
Merge from master with edits to scopeResolve.cpp.
Merge pull request #71 from hildeth/factorLookup

Factor lookup() and reorganize to expose the algorithm used.