Use filters when typechecking using tc-body.

Closes PR 11920.
Add some HISTORY lines for TR 6.0.1.
adjust let poly bug #4 so that the check procedure catches
errors and treats them as failing to satisfy the property

This bug disables the occurs check and, thanks to the now
tighter contracts on the uh function, this can cause it to
signal an error. Here's the example:

  (term (unify (x → (list int)) ((list x) → x)))

found by in-order enumeration (so naturally it had ||
variables in it, not 'x's originally)

This leads to this trace in the uh function:

  (uh ((x → (list int)) ((list x) → x) ·) ·)
  (uh (x (list x) ((list int) x ·))       ·)
  (uh ((list int) (list x) ·)             (x (list x) ·))
  (uh (int x ·)                           (x (list x) ·))
  (uh (x int ·)                           (x (list x) ·))
  (uh ·                                   (x int (int (list int) ·)))

whereby the third step sets up a problem (that's where the
occurs check should have aborted the program) but instead, a
few steps later when we get a substitution for 'x', it
causes the second argument to not have the form of
variables-for-types substitution.

I don't think this can happen when the occurs check is in place
because the variable elimination step makes sure that we don't
set ourselves up to change the domain of anything in the second
argument to 'uh' (except possibly when the occurs check fails,
of course).

Here's an example that shows this:

 (unify (q → q) (y → int)))
 (uh ((q → q) (y → int) ·) ·)
 (uh (q y (q int ·))       ·)
 (uh (y int ·)             (q y ·))
 (uh ·                     (y int (q int ·)))

In the second to last step we don't have (q int ·), we have
(y int ·) because the variable elimination step changes the
q to a y.
print out check's input on exceptions
Faster, more precise detection of separating hyperplanes in BSP tree build

The new method finds bounding planes for polygons using their
(approximate) normals and works for any number of them instead of
just two. The algorithm is O(n^2) where n is the number of polygons,
so it is currently applied only when n <= 5; i.e. near the leaves.
BSP tree type simplified; added support for no-polygon scenes

Previously, the BSP type had a "negative" and "positive" subtree, and
a collection of unsorted "zero" (on the plane) shapes. Rather than "zero"
being a subtree (which would sort the shapes), it's rolled into "positive",
with corresponding changes to the BSP walk.

BSP tree build now supports scenes without polygons, though it does split
on polygonal planes first. When all such splits fail (usually because there
are no polygons, but might be because all the shapes lie on one polygon's
plane), it tries splitting on planes containing line segments. When that
fails (usually because there are no line segments), it tries splitting
disjointly on all remaining vertexes, then splitting at the midpoint of
the longest axis.

Upshot: it'll draw a double helix created by two `parametric3d' renderers
properly.
Reduce point3d rendering time by 50-70% by keeping points grouped

The old depth sort hack split up groups of identical points in order
to sort them. Now the BSP tree build keeps them grouped, only splitting
groups of points as needed. Drawing parameters like color and pen
width are set only once for each group instead of once for each point.
The speedup is from reducing the number of calls to set them.
Fixed error in drawing connected lines with axis transforms
Add script to find good p-values, adjust models.

The definition of good at this point is that
the average is close to the maximum counterexample
size.
Make exception handlers smarter about opening the result.
Make open-Result not incorrectly close over rest and keyword arguments.
Add contracts to filters.
Add a bunch of new check below tests.
Remove unnecessary use of `remove-duplicates'
Changed PDF/PS backend to use 1.0 x 1.0 scaling

This makes plotting to a file the same (well, with slight differences)
regardless of file format. Scaling and other PS options are controlled
by a `plot-ps-setup' parameter. Not sure how useful that is, yet, so
it's undocumented.
fix makefile for MinGW cross-compile
meta/new-web: fix `#:html-only?` keyword arguments
Make it so that handlers lookup arrities other than the first.

Fixes current build breakage.
adjust the dns tests so they stop failing

also, remove eli-tester use since I got bit, yet one more time,
by the "syntax error on both sides of the => implies the test case
passes" behavior.
ffi/unsafe: add `_stdbool`