A context manager for managing things injected into __builtin__.
Store ipython references in the __builtin__ namespace.
Add a builtin and save the original.
Remove any builtins which might have been added by add_builtins, or restore overwritten ones to their previous values.
Remove an added builtin and re-set the original.