memoize .sbt file loading within a build and only add a Project once

This fixes an infinite loop when defining a Project in a .sbt file
with the build base directory as the project base directory.
This allows the standard behavior for interpreting settings from
.sbt files for both Projects defined in .sbt files as well as in
.scala files. That is, settings in .sbt files in "." go in all
projects with "." as their base directory.

Ref #554.
Use a default root project aggregating all projects if no root is defined.  Fixes #697.

Ref #554.
Better auto-generated IDs for default projects.  Fixes #554.

For the global plugins project, the default ID is "global-plugins".
For a normal project, the default ID is the name of the build directory.
The ID of a build definition for one of the above appends -build.