Fixed #12288 -- Validated that app names in INSTALLED_APPS are unique
Documentation -- added instructions on working with pull requests

Since non-core contributors are asked to review patches, instructions
on working with pull requests were added to the Working with Git and
GitHub page (based on the existing instructions in the core
committers page).
Fixed #21094 -- Updated reuseable apps tutorial to use pip for installation.

Thanks ylb415 at gmail.com for the suggestion.
Fixed #21100 -- Noted that Create/UpdateViews.fields is new in 1.6

Thanks AndrewIngram for the suggestion.
Fixed #21101 -- Updated urlize documentation to mention email addresses
Fixed #21060 -- Refactored admin's autodiscover method to make it reusable.

We want to be able to use it for instance for discovering `tasks.py` modules
inside the INSTALLED_APPS.

This commit therefore moves the logic to `autodiscover_modules` method in
django.utils.module_loading.
Fixed #21097 - Added DatabaseFeature.can_introspect_autofield
Added tests for double-pickling a QuerySet

Refs #21102.
Revert "Fixed #12288 -- Validated that app names in INSTALLED_APPS are unique"

This reverts commit c1ec08998d1b690855d5e69a1f4d9d2f01d44ae6.

There are backwards compatability concerns with this.
Fixed #20950 -- Instantiate OrderedDict() only when needed

The use of OrderedDict (even an empty one) was surprisingly slow. By
initializing OrderedDict only when needed it is possible to save
non-trivial amount of computing time (Model.save() is around 30% faster
for example).

This commit targetted sql.Query only, there are likely other places
which could use similar optimizations.
Removed an import * that was masking importing stuff from the wrong location
Merge branch 'master' of https://github.com/django/django
REmoved some unused imports
Delayed initialization of Selenium webdrivers.

If setUpClass throws an exception (in this case "Address already in use" if the
super call can't find any open port to bind too) tearDownClass is not called.
This results in open browser windows from the webdriver, hence we only construct
it once we are sure there is no code afterwards which could error out.
Fixed error handling in 3c5775d36f7e431d9691829a78580873111cb714 for non-operational webdrivers.
Fixed a timing edge case in the RelatedFieldWidgetSeleniumFirefoxTests.

By settings an implicit wait timeout for the find_* methods we can wait
till the javascript code add the new option to the DOM.

See http://ci.djangoproject.com/job/Django/database=mysql_gis,python=python3.3/3174/testReport/junit/admin_widgets.tests/RelatedFieldWidgetSeleniumFirefoxTests/test_foreign_key_using_to_field/

Stacktrace:
Traceback (most recent call last):
  File "/var/lib/jenkins/jobs/Django/workspace/database/mysql_gis/python/python3.3/tests/admin_widgets/tests.py", line 1060, in test_foreign_key_using_to_field
      self.assertEqual(username_value, new_option.get_attribute('value'))
      AssertionError: 'newuser' != 'testser'
      - newuser
      + testser
Ensure that passwords are never long enough for a DoS.

* Limit the password length to 4096 bytes
  * Password hashers will raise a ValueError
  * django.contrib.auth forms will fail validation
* Document in release notes that this is a backwards incompatible change

Thanks to Josh Wright for the report, and Donald Stufft for the patch.

This is a security fix; disclosure to follow shortly.
Cleaned up 1.5.4/1.4.8 release notes
Fixed #17627 -- Renamed util.py files to utils.py

Thanks PaulM for the suggestion and Luke Granger-Brown and
Wiktor Kołodziej for the initial patch.
Added backwards compatability shims for util modules.

refs #17627