Fixed #19087 -- Ensured query's base table is never LOUTER joined

This fixes a regression created by join promotion logic refactoring:
01b9c3d5193fe61b82ae8b26242a13fdec22f211

Thanks to Ivan Virabyan for the report.
Use smarter string decoding in GeoDjango

The first try to solve the Python 3 GIS encoding/decoding issue
was too naive. Using decode() on all read strings is bound to fail
as soon as a non-ascii string is concerned.
This patch is a little more clever, leaving ascii decoding when
plain ascii strings are expected, and allowing to specify a custom
encoding in DataSource hierarchy.
Improved assertion error messages in validators tests
Moved some email validation tests to validators tests
Fixed #17867 -- Made email validation pass with IDN domains

Thanks Pierre Matri for the report and the initial patch.
Fixed #19095 -- invalid code in multidb tests.
Fixed #18153 -- Reverse OneToOne lookups on unsaved instances.

Thanks David Hatch and Anssi Kääriäinen for their inputs.
Fix exception message from 3190abcd. Refs #18153.

Thanks Preston Holmes.
Fixed test failure after IDN domain validation fix

Refs #17867.
The address in test_email_regexp_for_performance used to take forever
(security issue), then was supposed to fail after the fix (commit 9f8287a3f).
Now we are less strict with domain validation, due to new IDN domains,
hence the validation of this address pass now.
Fixed #19096 -- Made can_return_id_from_insert more extendable

RETURNING is an extension of the SQL standard, which is not implemented
the same by all databases. Allow DatabaseOperations.return_insert_id to
return a None to allow for other 3rd party backends with a different
implementation.
Revert "Splitted expressions tests into smaller methods"

This reverts commit c2532825dbe2a422bbce67285637febb0ef9c9f1.
Revert "Fixed #16211 -- Added comparison and negation ops to F() expressions"

This reverts commit 28abf5f0ebc9d380f25dd278d7ef4642c4504545.

Conflicts:

	docs/releases/1.5.txt
Moved F() '&' and '|' to .bitand() and .bitor()

Done for consistency with Q() expressions and QuerySet combining. This
will allow usage of '&' and '|' as boolean logical operators in the
future. Refs #16211.
Fixed #18927 -- Fixed bulk_create tests when no has_bulk_insert
Mark the test for left/right lookup types as a known failure on PostGIS 2.0.
Removed some uses of F() expression & and |

Refs #16211
Fixed #19097 -- documented module of origin for HttpRes/req objects
Fixed error output from runserver

This has been missed in commit 822d6d6dab (Refs #18325).
Use renamed threading event API in Python 3.3

Refs #19038.
Remove heteronormativity from coding style doc