Shallow refactoring of define-generics macro implementation.

Turned syntax-case guard into explicit checks with a slightly more informative
error message, and turned let* bindings into internal definitions.
Another minor refactoring of define-generics macro.

Turned with-syntax bindings into internal definitions.
Yet more refactoring in define-generics.

Replaced uses of unsyntax and unsyntax-splicing with pattern variables defined
using define/with-syntax.
Adding fallback method implementations to define-primitive-generics.
Adding #:fallback option to define-generics.
Changed #:fallback to #:fallbacks in define-primitive-generics.
Changed #:fallback to #:fallbacks in define-generics.
Generics contracts now ignore unsupported methods.

With the addition of method fallbacks, there are a few choices for how generics
contracts might treat unsupported methods.  They might (a) always reject them,
(b) always accept them, or (c) wrap fallbacks if present and otherwise reject
them.  The previous implementation was (a); now it is (b), which wraps
everything implemented for the specific generic type, and trusts the
implementations of the fallbacks, since they can only interact with the
underlying type through the supported operations anyway.  This keeps the
fallbacks from pervading the implementation of generics and also reduces
contract wrapping.
Made generic methods preserve procedure names.
Made fallbacks and defined-table work for "default" generic values.
Implementing an abstraction for static info about generics.
Using abstract generics info in define-struct.
Got racket/private/generic-methods to compile.
Imported racket/private/generic-methods in racket/private/generic.
Fallbacks are no longer a "TODO" item.
Double semicolon comments indent better than single semicolon comments.
Generic method tables must be implemented as vectors for backward compatibility.
Converting private define-generics to fit with abstracted-out method tables.

This work is unfinished, uncompiled, and untested.
The generic-methods module needs to change; its assumptions about hygiene are
not consistent with the stream and dict generics.
Work on implementation of generic method internals.
Fixed typos in racket/private/generic.