Changed "generics group" to "generic interface" in errors and documentation.
Added tools for contracts, impersonators, and chaperones for generic interfaces.

Added four macros to racket/generic:
- chaperone-generics
- impersonate-generics
- redirect-generics (dynamically chooses between the above two)
- generic-instance/c
All take pairs of method names and wrappers (procedures or contracts),
and turn those into appropriate chaperone, impersonator, or contract wrappers
on the method tables of the given structs.

Used this to rewrite set/c to give better error messages.
Documented forms for generic instance chaperones, impersonators, and contracts.