Keep NULL values as nil when typecasting

Previously, NULL values in the DB arrays were correctly converted to nil in String#from_postgres_array, however this would result either in an error (with e.g. floats) or an incorrect value (with e.g. integers, as nil.to_i => 0).

This preserves NULL values as nil in the resulting Ruby array, and also adds spec coverage for all of the existing typecasting behaviour.