[SPARK-4358][SQL] Let BigDecimal do checking type compatibility and use more specified numeric types 

Remove hardcoding max and min values for types. Let BigDecimal do checking type compatibility.
It might be clearer / shorter to do this as two separate rules.  I personally try to avoid `var` whenever possible.