edit docs for gen:set methods

- classify methods into 3 categories:
  - no fallbacks
  - fallbacks that require an "implementation" of another method,
    ie not another fallback
  - fallbacks that require "support" of another method
    --- can be another fallback
Added raise-support-error and exn:fail:support to racket/generic.

The exn:fail:support exception is used to signal "unsupported" values for
generic methods, e.g. a vector as argument to dict-remove.  Right interface,
just the wrong kind of instance.  The exception type helps define the notion of
a "supported" method, since a method might have a fallback implementation yet
some values are not considered "supported".
Moved tech terms for "implemented" and "supported" generic methods.

These terms are now documented with define-generics rather than gen:set, and the
terms are "implemented generic method" and "supported generic method" rather
than the over-general "implements" and "supports".