Fixed #22135 -- Added ModelAdmin.get_changeform_initial_data().

Allows custom behavior for setting initial form data in ModelAdmin.
By default, initial data is set via GET params. The new method allows
this behavior to be overridden.

Thanks egasimus for the suggestion.
Fixed many typos in comments and docstrings.

Thanks Piotr Kasprzyk for help with the patch.
Fixed some typos and formatting issues in docs.
Removed doc newlines added in previous commit that caused build errors.
Fixed broken tests on Python 3 after 3c5fc708f1a8f60c05182869f6f3ec13697bbcf2.
Fixed #21908 -- Added example usage for ModelAdmin.get_inline_instances().

Thanks matt at schinckel.net for the suggestion.
Fixed #21986 -- Added some guidelines for database indexes.

Thanks django-issues at colons.co for the suggestion.
Allowed custom querysets when prefetching single valued relations

The original patch for custom prefetches didn't allow usage of custom
queryset for single valued relations (along ForeignKey or OneToOneKey).
Allowing these enables calling performance oriented queryset methods like
select_related or defer/only.

Thanks @akaariai and @timgraham for the reviews. Refs #17001.
Fixed #16727 -- Added protocol-relative URL support to contenttypes.views.shortcut.
Cleaned up a repr() hack that caused problems on Python3.