__exit__ function now handles cleanup instead del

The del function will call exit instead.
This was done to accomodate platforms that don't use ref-counted scope.

We now encourage the developer to use the with statement to imply using __exit__

Added another test as an example of using redef and raising an exception.