raise exception when the firefox binary isn't actually found, which usually implies the upgrade failed (on windows)

Fixes Issue #6092
Fixes Issue #6847
don't mutate the global 'ignored exceptions', take a copy of the globally specified ones, change the global to be a tuple instead

Fixes Issue #7725
UnexpectedAlertPresentException should contain the alert text in python too.

Fixes Issue #7745