Handle custom types using jdbc metadata.

Inferred types based on schemacrawler do not seem to include properly mapped
type classes for custom types, at least with postgresql (probably because it
does not use the standard type map).  As a result, we incorporate the types
from jdbc's metadata with the inferred types (when available).

This also involves a shift from reasoning about scala types to reasoning about
explicitly-defined SQL types (Type), which theoretically makes more sense.

This works for simple types but may still have issues for parameterized types.