user paths depend on name (not always version); no `shared' pkg scope

An installation has a name (via the configuration file "config.rktd")
that defaults to the version string. The name, instead of the
Racket version, is used for forming the path to the user "collects"
directory, user packages, and so on. The `user' package scope is
thus user- and installation-name-specific (instead of user- and
version-specific).

Remove `shared' package and link scope, since the notion of
installation names generalizes the concept (a set of installations
can be given the same name) and fits it into `user' scope.
make a build via the top-level makefile set scope to `installation'

Also, set the installation name to "development".
make installation name configurable via `raco pkg config'
distro-build: support installation-name configuration for installers

The default is "snapshot" for non-release builds, left as the
version number for release builds.
add `raco pkg migrate'
add migration panel to GUI package manager

Also add "gui-pkg-manager" packages, including a "Racket Package Manager"
GUI application (that needs a better icon).

The package that supplies "Racket Package Manager" is not in the main
distribution, since DrRacket already includes the GUI package manager.
fix icon for "Racket Documentation" launcher
Rackety: bring down below 102 columns
Add use of 'sub-range-binders properties for Check Syntax's benefit
Support 'sub-range-binders property

With this commit, renaming & the arrows should work for
struct and define-struct
access "native-pkgs" as a git submodule

This looks like a good use case for submodules, because the
native-library packages change infrequently, and no one cares
about the history of changes relative to the rest of the
project (except to be able to get a set of packages that is
consistent with the rest of the repository).

The change avoids the problem that `make' on Mac OS X would
try a `git update', which is no good if you happen to be
offline (and have your "buidl.native-pkgs" repo pull from the
obvious place).

Finally, it's easier for Windows users, since `git submodule init'
and `git submodule update' is easier to use and remember than
`git clone <some-repository-URL>'. The makefile more helpfully
complains if "native-pkgs" doesn't seem to have been initialized
as a submodule.
add `build-stamp' configuration and fix `repo-time-stamp/stamp'

The "repo-time-stamp" collection used to be omitted from a
release, but to keep things simpler, it's staying in the
"drracket" (and therefore "main-distribution") package. The
build process installs an empty `build-stamp' value (by default)
into a release build, or it installs a useful stamp for
a non-release build.
rename "core" makefile targets to "base"

Using "base" is more consistent.
adjust startup to avoid config file if collection links are disabled

The intent of this change is to avoid trying to read a configuration
file from a stand-alone executable.
misc doc updates

The updates are related to obscure changes for the package
system and installers.
Windows installer: offer to auto-launch DrRacket

The 'start-menu? aux key for launcher creation changed to 'start-menu,
with a real-number value indicating a request and precedence for
auto-launching (where a precedence is needed because only one application
can be auto-launched).
raco setup: print "summary of errors" before the summary of errors
distro-build: fix reference to "native-pkgs"
fix contract test suite infrastructure
Fixed a few bugs in set/c's keyword options, and one test for set/c.

Specifically, set/c no longer behaves as a flat contract, so it is necessary to
apply at least one set operation to detect a contract error on an element.  It
is possible the flat behavior can be restored for some kinds of sets, but it's
not immediately obvious what kinds those should be.  (Immutable hash sets in
particular?  Any sets that don't implement set-add! or set-remove!?)