What happens if the user creates a distributed array `da` with `da = context.empty()` and then calls `context.cleanup_keys()`?  Won't that leave `da` in a broken state since its corresponding `LocalArray`s are gone?  I'd like to avoid this if at all possible.

We could make this an internal, private method, only to be called by developers during testing and otherwise.  Or we could make this part of the context's `__del__` method.  Thoughts?