Keep track of all the names in identifier Usages

Use an Identifier * Identifier list to represent the fact that there
must be at least one identifier. This represents a long identifier with
dots (i.e. namespace.module.declaration).
Code to find usages in module scope trees

The implementation proceeds by:

  * Building a list of all the module declarations in the project
  * Finding the declaration location of all the used identifiers in the
    current module
  * Adding as usages those which have a declaration in the list from
    before

Removed the test which tried to build a module with a fully qualified
usage, because it is done in the new test instead.
Use Project for parsing and type checking

Instead of using a string representing the source code.
Remove TopLevelDeclarations

The distinction will be made by looking at ModuleScopeTrees.
Use the new makeNestedScopeTrees in IdentifierScopeTrees

Some of the tests were changed, because the order of nodes have changed
slightly.