Fix Formatter.format's handling of Formattable.

This doesn't make much difference to performance, but it is
slightly faster and I think it reads better too. Proof of the
latter is the fact that the rewritten form accidentally fixed
bug 1767: the old code was storing up literal text until after
handling the next format specifier, which is wrong if the
format specifier has side effects caused by the use of
Formattable.

(I don't plan on doing any more on the performance bug for now,
though I note that %g allocates and manipulates BigDecimal
instances, which would be worth looking at when we get round to
the bug that causes it to fail a harmony test.)

Bug: 1476, 1767
2 files changed