repair for more recent MinGW

I think that `-static-libgcc` didn't solve any problems with gcc
3.7.x, but with 3.8.x, divdi3() shows up, and that leads to
a "libgcc_s.dll" dependency unless `-static-libgcc` is used.
Professionalism

Line 11: "may" instead of "can"
Line 11: "implies" instead of "means"
Line 14: "states" instead of "means"
Line 17: -resources should be clear and separated-
README tweak

Based on a suggestion from freshlikeesch.
optimizer: fix reordering problems

When a variable X is bound to an expression that implies properties of
other bindings, and if X is used only once and can be replaced by
its value expression, then further optimization of that expression must
not assume the properties that are established by evaluating the
expression.

Also, don't move expressions past unsafe operations, since the expression
might implicitly guard against unsafety.

Closes PR 14819
optimizer: refine tracking of when space safety is a constraint

Some expression movements are limited by the possibility of retaining
a value in a way that interacts with space safety, but primitives that
return immediately shouldn't get in the way of those movements.
optimizer: preserve implied properties from a `let` RHS

In an expression such as

 (let ([x (car y)])
   ....)

the information that `y` must be a pair didn't reach the body of the
`let` in most cases.