New approach to on-demand load of racket/gui/base.

When racket/gui/base not already loaded, examine the user module we're
about to load to see if it will require racket/gui/base. If so,
dynamic-require racket/gui/base on our main custodian. Then switch to
user custodian and dynamic-require the module as usual. That way, we can
do a custodian-shutdown-all on the user custodian, while leaving intact
the main eventspace defined by racket/gui/base.