Don't call ctx.term in gc after at exit events have fired

Python 3.4 can no longer be trusted to preserve the garbage collection order
during process exit.

and move del logic to sugar classes, so I don't keep repeating myself.

closes #537