Added rollback method to ActiveModel::Dirty
Don't add a second method for attribute existence

We already had one in the public API that people can use more easily for
the transition
Merge pull request #15991 from sgrif/sg-has-attribute

Don't add a second method for attribute existence
Merge pull request #14861 from igor04/dirty-rollback

Added rollback method to ActiveModel::Dirty
Add CHANGELOG entry for #14861 and document private methods on the API
Rename rollback_changes to undo_changes

To avoid overload with database rollback
Add String support for min/max attributes on DatetimeField
Merge pull request #15214 from todd/date_field_docs

Added String support for min and max properties for date field helpers
Use if/else

Since we are using both branches of the code is preferable to use
if/else over the early return.
Add CHANGELOG entry for #15214

Closes #15214
push host / port / protocol extraction up

Then we only need to extract host once.