change subprocess handling to avoid waitpid(0, ...)

Keep track of whether any Racket-managed subprocesses are pending,
and use waitpid(0, ...) only if there is one, to better cooperate
with an embedding environment.

Also, add a chapter to the "Inside" manual to explain the issues.
adjust drracket to track an lru order on tabs and use it
when closing one to pick the next one to show

added the touched and get-last-touched methods to tab<%>
rework online compilation's internals

Things should now generally be set up to work better --
for example online check syntax is smarter now about
what happens when switching tabs/frames and this also
makes it easier to add new ways for a window to become
dirty (that is, for it to be known that it needs to
be recompiled)
added 1e-10 floor to prevent div-by-zero
racket/draw: fix memory-management problems with JPEG binding
Add define: form variant for polymorphic non-function values
Add failing test case for instantiation and special typing rules.
add phantom byte strings

A phantom byte string is a small object that the memory
manager treats as an arbitrary-sized object, where the
size is specified when the phantom byte string is created
or or when size is changed via `set-phantom-bytes!'.
racket/draw: switch bitmap% accounting to phantom bytes

Avoids doubling the actual amount of memory used for a bitmap.
Render Scribble margin-note as Markdown block-quote.

More precisely, do this for nested flows with the "refcontent" style.

For instance this Scribble:

    @margin-note{Note: This is a note. Let's make it long enough that the
    markdown output will have to line-wrap, to make sure the > mark starts
    each line properly.}

Will render as this Markdown:

    > Note: This is a note. Let's make it long enough that the markdown output
    > will have to line-wrap, to make sure the > mark starts each line
    > properly.

A site like GitHub.com will render this in a block-quote style
suitable for notes:

> Note: This is a note. Let's make it long enough that the markdown output
> will have to line-wrap, to make sure the > mark starts each line
> properly.
Fix bug with pound signs used to mark sections.

Also update tests/scribble/markdown-docs files accordingly.
fix some status messages in the Rummy game

Changes set-status-text to set-status so that status messages are displayed to user.
Also, changed lang to `racket/gui' from `mzscheme'.
reduce dependencies of `games/ginrummy/ginrummy'
New Racket version 5.3.1.10.
fix declaration mismatch for GC function
racket/draw: fix another problem with the JPEG binding

JPEG reading and writing involve callbacks that need to be
atomic, since the stack-swapping games that a Racket thread
switch plays may not be ok with the JPEG library (as exposed
by the stress test). So, the JPEG reading and writing code
must read/write a string port, instead of directly from/to
the source/destination port, since a string port can be
used in atomic mode.
Reviewing and refactoring `math/matrix', part 1

* Finally added `array-axis-expand' as a dual for `array-axis-reduce'
  in order to implement `vandermonde-matrix' elegantly

* Better, shorter matrix multiply; reworked all matrix arithmetic

* Split "matrix-operations.rkt" into at least 5 parts:
 * "matrix-operations.rkt"
 * "matrix-basic.rkt"
 * "matrix-comprehension.rkt"
 * "matrix-sequences.rkt"
 * "matrix-column.rkt"

Added "matrix-constructors.rkt"

Added `matrix', `row-matrix', and `col-matrix' macros

A lot of other little changes

Currently, `in-row' and `in-column' are broken. I intend to implement
them in a way that makes them work in untyped and Typed Racket.
Moar `math/matrix' review/refactoring

* Split "matrix-constructors.rkt" into three parts:
 * "matrix-constructors.rkt"
 * "matrix-conversion.rkt"
 * "matrix-syntax.rkt"

* Made `matrix-map' automatically inline (it's dirt simple)

* Renamed a few things, changed some type signatures

* Fixed error in `matrix-dot' caught by testing (it was broadcasting)

* Rewrote matrix comprehensions in terms of array comprehensions

* Removed `in-column' and `in-row' (can use `in-array', `matrix-col' and
  `matrix-row')

* Tons of new rackunit tests: only "matrix-2d.rkt" and
  "matrix-operations.rkt" are left (though the latter is large)
mingw32: make no-futures, no-places build work
mingw32: use same strategy for thread-locals as MSVC

The gcc implementation of `_thread' seems to be much
slower, so we use the inline-assembly technique from
the MSVC build plus a hack in "main.c".