Rolling back r611543 for LANG-393, and removing the special handling of BigDecimal to use compareTo instead of equals because it creates an inequality with HashCodeBuilder [reported in LANG-467 by David Jones]
Applying Jörg Gottschling's patch from LANG-358 with Thomas Menzel's naming from LANG-550 and some of his tests. This adds a firstNonNull method to ObjectUtils.