Make pg_array extension use correct type when typecasting column values for smallint, oid, real, character, and varchar arrays

Previously, these arrays used either integer[], double precision[],
or text[] for the underlying type, which breaks things when the
values are used when filtering (can't cast real[] to
double precision[], etc.).  This wasn't caught previously because
the types on retrieval from the database were set correctly.

This removes support for the :typecast_method option when
registering an array type.  Such an option is fundementally broken,
as it will reuse the same database type, when leads to the casting
issues.