Fixed late fireOnce subscribers not receiving a facade arg, if there were no subscribers during the initial fire

`this.firedWith` is updated by reference, during the fire processing,
when a facade is created, and this didn't happen (for valid performance
reasons) if there were no subscribers, as a result of the changes in 3.10.0

The fix updates this.firedWith with a facade instance, if absent, before passing it to subscribers (we don't take the `fire()` path for late fireOnce subscribers.

Added unit tests for a bunch of fireOnce scenarios and all library tests pass.