DecimalNode: change .equals()/.hashCode() implementation, test it

Commit f88c50a10bbd2d1dc4ae6d7ca0a4ece68adc00c1 worked around decimal nodes' "1"
and "1.0" not being equal by stripping all decimal zeroes off BigDecimals passed
as an argument -- and made it the default.

However, this spells trouble for users who wish the deserialized representation
to be exact; for instance, 600.00 is converted to 6e+2.

Rework the implementation completely; we now rely on the fact that BigDecimal's
.doubleValue() will return the same value for two nodes which are numerically
equal for computing the hash code, and use .compareTo() in .equals().

Add tests for a randomly selected, pathologically large number.
Merge pull request #249 from fge/2.2

Fix DecimalNode's .equals()/.hashCode(); change the default JsonNodeFactory instance