Remove automatic null handling in non-generic datum converter methods

Previous revision allowed AbstractDatumConverter to automatically handle
nulls in the non-generic ConvertDatum and ConvertObject methods; this
would have allowed null values to be used for non-nullable datum
converters in some cases.  To address this, the abstract class was split
into two types; one which works for reference types (nullable), one which
works for value types (non-nullable), and NullableDatumConverter was
updated to not use the abstract base class so that it can intentionally do
null value types correctly.