fix excessive correction of bounding

Commit 69984fb231 extended glyph bounding boxes in the wrong
(pre-scaled) coordinate system.
racket/draw Cocoa: hack to make Courier New work in 10.{7,8}

The bounding box in the Courier New font is wrong in Mac OS X
10.7 and 10.8. Recognize that combination and make the bounding
box bigger as a workaround.
all necessary changes to check references to uninitialized letrec variables

includes a new pass, letrec_check, two new primitives, and
changes to packages that grabbed the letrec undefined value
updated tests for letrec
fix some uses of not-yet-defined fields
JIT-inline `check-not-undefined`
install test suite
removing debugging code
doc tweaks
fix a bug in the handling/setup of definitions-canvas
adjust drracket frame startup to conform to new checks

I don't think that there was a bug behind this change. There may
have been and it is probably now easier to reason about this code
than it was before, but I think that this code was probably using
object?, not checking directly with undefined) properly.
move internal `undefined` to `unsafe-undefined`
adjust some classes to avoid chaperones
reduce `racket/undefined` to just `undefined`
adjust DrRacket to work with the new undefined semantics

by completely cheating and initializing the troublesome fields
with a new variation on undefined and turning the definitions
into set!s.
fix Windows projects for new file
remove unnecessary "return;"s

Some compilers particularly dislike

 return function_that_returns_void();
fix for Gtk back-end
removing dead code in fun.c