Describe the bug
Users can create Decimal values with invalid BYTE_WIDTH, such as
let v = BasicDecimal::<1>::new(1, 1, &[1]);
Expected behavior
We need to add more restriction to the decimal type so that only Decimal128 and Decimal256 can be used.
Additional context