[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.
Hmm, it seems a little odd to be doing subtle type conversion here, especially since the name is `IntegerLiteral`.  If it was `Integral`, maybe...  I'm not super opposed, but is there a reason you want to make this change?