Add foreign_type option for polymorphic has_one and has_many.

To be possible to use a custom column name to save/read the polymorphic
associated type in a has_many or has_one polymorphic association, now users
can use the option :foreign_type to inform in what column the associated object
type will be saved.
Merge pull request #17970 from ulissesalmeida/foreign-type-has-many-has-one

Add foreign_type option for polymorphic has_one and has_many.
Revert "Merge pull request #17943 from jeremywadsack/doc_cache_importability"

This reverts commit b0e7278ddbe483475d7b2e161e65ae18df91b9f8, reversing
changes made to 785d04e3109f69d0b9b9f4732179592f0ef04e52.

This is not true. It is a bug and we will fix in the latest 4.0.x
release.
Fix undesirable RangeError by Type::Integer. Add Type::UnsignedInteger.