CDK-443: Add --required option to csv-schema command.

This adds an option to the csv-schema command that marks a field as
required. Schema inference will still check whether there are nulls
found in the field and will complain if they are found. If there aren't
null values, then the result schema will not add the type in a union
with null.

Schema inference was updated to check a set of required names and also
to handle the empty string differently. If the type is string, then the
empty string is a valid value and shouldn't be considered null. For
numeric types, the empty string can't be coerced to a value and should be
considered null. This is a slight change to inference, but doesn't
affect the behavior of csv-schema because all types were considered
nullable without the new option.
CDK-443: Fix refactor header field handling.

This refactors the header field handling to avoid multiple calls to
trim() and duplicate validation checks.
CDK-443: Fix IOException handling in CSV inference tests.