Cleanup cleanup

* small refactoring of key cleanup stuff in 6a9d5fa
* Remove instances of `del context` in favor of `context.cleanup_keys()`
* Remove IpclusterTestCase. This test case was causing problems because it would close the `IPython.parallel.client` then context's would not be able to clean up their keys. It was also inherited from in many cases, but unused in all but one location.
* Remove `def __del__` method from `Context`. This was causing problems, because the time at which `__del__` is called is unpredictable, but we were requiring that we still had a connection to the engines. This might not always be true. Instead, when necessary we can manually cleanup a context with the `cleanup` method.