Locale-sensitive, self-denominating Bitcoin value formatter/parser

I had created this class for myself, but with just a bit of modification it seems worth sharing.  If you fancy making it part of bitcoinj, you're welcome to it.  If not, no hard feelings.

There is javadoc documentation in the comments, but briefly, while it overlaps partially with the `CoinFormat` class, the major differences are:

3. When formatting, it adjusts the denominational units so as to minimize the number of zeros in the formatted number and adds a currency symbol or code to indicate the units;
2. The number formatting and placement of the currency symbol/code is locale sensitive; and
1. It extends the `java.text.Format` class, which allows for the type of examination and manipulation of the different fields in the format--such as integer, fraction and decimal separator--that is necessary if you need to do things such as aligning a list of numbers vertically.
The reason I'm using `BigInteger` here is because I ascertain whether the value is evenly divisible by certain powers of ten by moving the decimal place using that class's `movePointLeft()` and `movePointRight` methods, which `Coin` does not have.  If I used `Coin`, I would have to extract the value, which is a `long`, and then do something like using the `Math.pow` method (which takes `double`s) on `10` and then multiply the result, yielding far less readable code.

The fact that I'm not using `Coin` is not intended to be seen by client users, but this method must be `protected` rather than `private` because `BtcFixedFormat` and `BtcAutoFormat` each override this method, which the base class invokes.

If this doesn't make sense or I'm missing something let me know.  Otherwise I'll leave it using `BigInteger`.