Extended fire signature parsing optimizations to optimize for 3 args

Previously we were optimizing for upto 2 args `fire(foo)` and `fire(foo, facade)` as the common use cases.

In order to optimize the fix for https://github.com/yui/yui3/pull/722#issuecomment-17626727 `fire(foo, facade, opts)` becomes a fairly common use case also. Hence extending it to 3 args, with the fastest path still being for `fire(foo, facade)`.