Fix with-contract so that contracts are only applied per mutation.

There's still a function application (here, a thunk) lurking in
external accesses, but since that's a trade-off for an entire contract
application, we profit.
Fix a couple of identifer references that were overlooked.
Remove additional cruft.
Synch German string constants with latest.
Use old inefficient implementation for top-level for now.
bugfix in the closure support
allow quote require forms in the argument to allocator-setup

This is mostly to better support test cases so that we
can set up namespaces that have specific collectors in them
(easiest to do with quote-based requires)
when anormalizing, never lift out identifiers from application expressions

The code used to avoid lifting identifier in more restricted circumstances,
but it seems safe to alway avoid that, which can lead to a lot
less lifting
add tests for plai's get-root-set (in gc2)
fix a bug in the way let-values decided which variables are roots

also, Rackety
adjust the expansion of #%module-begin so it doesn't
generate so much code

(Mostly to avoid pain with the macro stepper, but also
reducing the amount of code macros generates is good
for performance reasons)
Revert hack for top-level, institute real fix.

As a side-effect of this fix, we don't need the thunking behavior for
external identifiers anymore.  Even better!

Also include some other cleanups suggested by Ryan and moves from
quasisyntax/loc -> syntax/loc where we don't use the quasiquoting.
Rename `{take,drop}-while' -> `{take,drop}f'.

Also, improve the tests a little.
Clean up source layout.
Shuffle code for a more logical order.
Added `splitf-at', `takef-right', `dropf-right', `splitf-at-right', and more.

* See comment about implementation issues.

* Removed the `list?' requirement on `takef' etc -- so it matches the
  non-*f versions.  (IMO, it'd be better to drop it from all of them.)
  This also changes the output of `dropf' to `any/c'.

* Swapped the argument order so the predicate is last -- this makes it
  uniform with the non-f* versions.  (IMO, it'b be better to use the
  popular order in all of them instead.)

* Includes tests, and also improved version of previous tests.

* Includes docs, and also fixes to previous docs (eg, drop* doesn't
  return a fresh list).
Move the `define-inline' tests to "tests/racket/optimize.rktl".

Avoids a bad dependency.
Actually swap the argument order.

(This was supposed to be included with the other commit.)
adjust plai's gc2 language to use roots as the arguments
to gc:cons and gc:closure instead of passing locs

This enables the important change, namely that get-root-set
no longer returns roots corresponding to the arguments
of the allocation function that we're in the middle of.

This means that a common error students have (forgetting
to chase the 'hd' and 'tl' pointers in their GC) is
harder to make now, since get-root-set never contains
those locations as roots. (In the past you would have had
to write some pretty non-obvious mutator program to get
that behavior.)
Minor sha1 doc fixes