Merge pull request #585 from blongden/clarify_php_refs

Removed poor PHP references
Fixed #9962 - Added a testing tutorial.

Thank-you Daniele Procida for the first draft
and shaibi, Aymeric, and others for the reviews.
Fixed #9589 -- Made development web server more robust in the presence of a wider variety of code errors.

Thanks goes to contributor with Trac user 'berto' for the patch.
Fixed a couple of docstring typos.
Fixed #19342 - Added new tutorials to the 1.5 release notes
Fixed #19344 - Documented how to run django-admin in a virtualenv on Windows.

Thanks Hourann Bosci for the patch.
Fixed #19384 -- Documented the behavior of custom managers on abstract models.

This documents the behavior introduced by cc337a74, which is BACKWARDS
INCOMPATIBLE for any attempt to invoke a method on a manager using the
abstract class as the calling class (e.g., AbstractBase.objects.do_something())

Thanks to mhsparks for the report.
Fixed #19472 -- Documented the testing requirements and tools for custom User models.

Thanks to gcc for the report.
Fixed #19412 -- Added PermissionsMixin to the auth.User heirarchy.

This makes it easier to make a ModelBackend-compliant (with regards to
permissions) User model.

Thanks to cdestigter for the report about the relationship between
ModelBackend and permissions, and to the many users on django-dev that
contributed to the discussion about mixins.
Fixed #19368 -- Ensured that login error messages adapt to changes in the User model.

Thanks to un33k for the report.
Corrected tests depending on the error message on the AuthenticationForm.

Refs #19368, and the fix introduced in 27f8129d64292868f6a328f7bf9a1bed67967ff3.
Fixed #19469 -- Removed opts.get_ordered_objects() and related code

The code was dead-code since 2006.
Fixed #18816 -- Removed "trim" argument from add_filter()

The trim argument was used by split_exclude() only to trim the last
join from the given lookup. It is cleaner to just trim the last part
from the lookup in split_exclude() directly so that there is no need
to burden add_filter() with the logic needed for only split_exclude().
Fixed #10790 -- Refactored sql.Query.setup_joins()

This is a rather large refactoring. The "lookup traversal" code was
splitted out from the setup_joins. There is now names_to_path() method
which does the lookup traveling, the actual work of setup_joins() is
calling names_to_path() and then adding the joins found into the query.

As a side effect it was possible to remove the "process_extra"
functionality used by genric relations. This never worked for left
joins. Now the extra restriction is appended directly to the join
condition instead of the where clause.

To generate the extra condition we need to have the join field
available in the compiler. This has the side-effect that we need more
ugly code in Query.__getstate__ and __setstate__ as Field objects
aren't pickleable.

The join trimming code got a big change - now we trim all direct joins
and never trim reverse joins. This also fixes the problem in #10790
which was join trimming in null filter cases.
Added PDF version of SVG file for latexpdf builds.

Thanks Tim Graham for reporting this issue and testing the fix.
Fixed #18718 - Documented django.utils.encoding.filepath_to_uri
Fixed #16679 -- Use caching to speed up signal sending
Replaced the test case hierarchy schema with a vector version.

The OmniGraffle source file is included for future use.
Fixed #19483 -- Improved import error message in contrib.comments

Thanks Valentin Lorentz for the report and the suggested fix.
Fixed #19279 - Clarified order of database setup and Django install.

Thanks colinnkeenan for the suggestion.