Move PG OID types to their own files

As we promote these classes to first class concepts, these classes are
starting to gain enough behavior to warrant being moved into their own
files. Many of them will become quite large as we move additional
behavior to the type objects.
Move extract_scale to decimal type

The only type that has a scale is decimal. There's a special case where
decimal columns with 0 scale are type cast to integers if the scale is
not specified. Appears to only affect schema dumping.
Merge pull request #15218 from sgrif/sg-move-oid-types

Move PG OID types to their own files
Merge pull request #15237 from sgrif/sg-move-extract-scale

Move extract_scale to decimal type
Move `extract_precision` onto type objects