Be stricter when parsing numbers from the CSV

Integer("foo") will raise exceptions when it's not clear what the intended
number would be, whereas "foo".to_i will make a best effort,
eg "".to_i => 0
eg Integer("") => ArgumentError: invalid value for Integer()

This change should make it clearer when there is unintended data in the input.