Fix Kernel#format so it works correctly in firefox

String.prototype.replace() works differently in firefox to the other
browsers, in that empty non-matching captures in regexps are set to an
empty string, where as the other browsers set this to undefined.

Kernel#format was relying on this value being undefined, but this commit
fixes that bug so either an empty string, or an undefined value will
work in the internals of the method.