Bullet-proof some extension and URL uninitialization code.

We hit some nasty issues where uninitializing an extension failed hard,
preventing all future attempts at uninitializing. These had to do with
the dynamically-set/removed extension.admin_site attribute, which was
assumed to be available if has_admin_site was True.

We now check for the existence of admin_site instead, and also catch
attempts at removing non-existing URLs in DynamicURLResolver.

Reviewed at https://reviews.reviewboard.org/r/5849/