Some reals will be downcast to double when used with `std.format`.

In the internals of `std.format` we replaced a call to `snprintf` of
`libc` with routines written in D for formatting floating point
values. These functions only work for floats, doubles, 64-bit-reals
and 80-bit-reals (x87-reals) yet.

All other reals are handled by downcasting them to doubles before
being formatted. This might result in a loss of precision in the
output. Further, numbers larger than `double.max` will be formatted like
`double.max` and numbers large than zero but smaller than the smallest
positive double will be formatted like the smallest positive double.
Likewise for negative values.
