Fix types in typed/file/gif

Thanks to WarGrey Gyoudmon Ju for reporting the bug

Please merge to v6.0.1
added David's check-random to test engine and teaching languages

this is somewhat experimental, but it helps with testing random functions
rewrite docs for check-random to make them student appropriate, ditto for check-expect
added some student examples to check-within and check-error
fixed structure printing, added example to check-range
upgrade pre-built libraries for Windows and Mac OS X

Mostly upgrades the drawing stack to the latest Cairo, Pango, Glib,
etc., but also upgrades the OpenSSL library on Windows to 1.0.1g.

The new "racket/src/native-libs" directory provides scripts to
rebuild the libraries from source. Those script are fragile, because
library sources and configuration scripts are fragile. The
scripts at least archive some expertise/advice in a mostly executable
form.
openssl: recognize version 1.0.1g

Merge to v6.0.1
fix `typed/test-engine`
Fix zsh auto-completion

The bash and zsh scripts expect different data from Racket: zsh expects
a list of collect roots and other parent directories of collections,
while bash expects a list of collection names
fix use before definition bug from c8f3974a2
raco pkg: improve error for failed package-source download

Related to PR 14441
fix benchmark logging to flush on every event
remove non-deterministic test, junk file
change benchmark logging to use s-exps
GUI type fixes
Re-implement contract generation for Name types

Instead of generating the contract for Name types as
they are encountered in a type, generate the contract at
each recursive type alias definition point.

This allows the mutual recursion to be established through
module definitions and `recursive-contract` with little effort.

Generating contracts this way makes contracts for complex GUI
class types more feasible.
Factor typed-untyped sides into alias contracts

Create contracts for typed, untyped, and both directions
of typed-untyped imports when generating recursive type
alias contracts.

This is required for sound type->contract translation.