Fixes a couple of bugs for when a task becomes a download task

If a task becomes a download task. None of the old delegate methods for the old task will get called. This means it wont remove the observer and it will not delete the delegate.

We never setup the new task with observing and it’s delegate either. When the new task's delegate method gets called, we will remove the observer which we never registered.