Add struct inheritance in type-environment

Use it to start adding types for a subset of
typed/racket/sandbox
Avoid creating impersonators/chaperones when not required in struct/dc.
add test case for 5ef7568
Add base-env type for symbol<?
fix places-GC trigger when a large message is pending

A large message that hasn't been delivered can trigger a inter-place
GC. The intent is to force a GC to avoid messages piling up that can
never be delivered, but the GC didn't adjust to a state where messages
stay both undelivered and uncollected, and it would continuosly
trigger GCs. Trigger a GC only if the pending-message size has grown
relative to the previous GC.
add `{impersonate,chaperone}-procedure*`

The new variants pass a "self" argument to the wrapper procedure in
the same way that `{impersonate,chaperone}-struct` provides a "self"
argument to redirection procedures.