Always check whether the context has been destroyed
#551 (closed) has the same root cause as #610 (closed), which is that when a background operation completes, we need to check whether the activity or fragment that started the operation has been destroyed before doing anything with the UI.
DestroyableActivity has been renamed to DestroyableContext because it's now implemented by some fragments as well. Various existing listener interfaces now extend DestroyableContext.
I also modified the ActivityLifecycleController interface so the activity is passed into the onActivityCreate() method rather than being injected - @ernir please check I haven't broken anything!
Closes #551 (closed)