Fix DBF writer so it does not truncate large-magnitude numbers.

The current code can truncate the DBF representation of a number, changing (for example) 12345 to 1234. The changed code goes to some length to protect against this data corruption, falling back to the Number.toString representation if the NumberFormat would cause this error, and throwing an IllegalArgumentException if the value still cannot be represented accurately.

Unit test included.