First pass at fixing this issue

Without checking that a URL is still registered our unload routine
falls into the trap of erroring out if someone already unregistered the
URL manually.  I'm adding a check here before attempting to register.

Another approach I've been examining as well is to capture all the
unload functions returned and run them when the unregister function is
run on the URL; this would remove the unload function from the queue.
Probably the better fix; let me know.