Fix bug in type of `apply-pattern-substitute`.

Found by @takikawa.
Fix test case for last commit.

There ought to be a way to improve the type of `apply-pattern-substitute`,
but we haven't found it yet.
redex: move benchmark into a separate package

Also:
* migrate all models from the diff-based method to
  an in-langauge approach using macros
* add a better interface for the harness
* add docs for
redex: fix benchmark package dependencies
Fix check-unreachable-code? mode in TR
Fix type of stx->list.
pict: improve docs for `scale`

Closes PR 14562
rackt/draw: fix internal error on too-large bitmap
pict: improve error for failure in `pict->bitmap`

Closes PR 14563
add tabbing rule for with-syntax*
Metafunctions now typeset their contracts as the first line

This is a backwards incompatible change, but there is a keyword
argument to render-metafunction and render-metafunctions that
goes back to the old behavior
add an example to the scale docs

related to PR 14562
adjust recursive-contract so that it terminates on cyclic values

closes PR 14559

This slows down tight recursive contract loops by about 10%, using
the code below as the micro-benchmark:

(require racket/contract/base)

(define c
  (recursive-contract
   (or/c #f (cons/c c c))
   #:flat))

(define n1
  (let loop ([i 500000])
    (cond
      [(zero? i) #f]
      [else (cons (loop (- i 1)) #f)])))

(define n2
  (let loop ([i 500000])
    (cond
      [(zero? i) n1]
      [else (cons (loop (- i 1)) #f)])))

(collect-garbage) (collect-garbage) (collect-garbage)

(void
 (time (contract c n1 'pos 'neg))
 (time (contract c n2 'pos 'neg)))

(cdr n1)
(cdr n2)
use correct editor class in syntax-browser snips
fix typo
better error message for unused #:declare clause
db: connection-pool checks connection is connected before handing out
db/postgresql: disconnect on EOF at ready-for-query
change the render-metafunction #:contract? argument default to #f
change recursive-contract to reject cyclic values

For a few reasons:

 - this seems to fit better with how TR already works

 - cyclic values are something that, at least in my experience,
   abstractions are not generally equipped to handle (and,
   perhaps worse, don't seem all that useful when weighed against
   the non-termination problems that can come up)

 - there was a suspicious case in the projection where, when a
   cycle was detected the projection just returned its argument
   (the place in the diff for this commit where there is now a
   call to raise-blame-error). I couldn't get this to cause problems,
   but this might just be because I'm not smart enough

related to PR 14559