Ensures all distarray objects removed from engines.

Uses `atexit.register()` rather than __del__
More refactorings for context cleanup stuff.
Merge branch 'master' into bugfix/cleanup-keys

Conflicts:
	utils/purge_cluster.py
Refactors dacluster.clear() function, removes an `execute` call.
Remove dead code.
Fix imports and dict.values() bug in Py3.
Merge pull request #317 from enthought/bugfix/cleanup-keys

Engine namespace cleanup