[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.
Recently I have debugged few bugs in Presto database. So I tried to look at how Presto treat the integer literal. I found that it just uses Long to represent all number types. Although it does not meant all SQL systems doing this, I think that it can be a reference here.

So I will remove the byte and short types in this PR and let this PR can be merged then. Thanks.