Ensure callback firing flag goes back to false if any handler throws

Using try finally to ensure ```firing``` is always set back to false, otherwise if any callback throws subsequent calls won't fire.

The issue can be easily reproduce this way:

``` js

$(function(){

   $(function(){ console.log("I get called"); });

   $(function(){ throw "something bad"; });

   $(function(){ console.log("I never get called"); });

});

```

The problem with is many jQuery plugins rely on jQuery ready function, and any error on a 3rd party handler function makes subsequent ones to never work again.