SIO-1344
Upgrade to Django 1.6

---
Update requirements

Upgrading to Django 1.6.
Upgrading grappelli to latest version compatible with Django 1.6 (<2.6).
Django-registration is no longer being supported nor is it compatible
with Django 1.6. Upgrading to django-registration-redux, a maintained
fork of django-registration.

---
Remove django-output-validator

Django-output-validator is not compatible with Django 1.6 and needs
to be removed.

---
Fix metaclass conflict in oioioi/base/admin.py's ModelAdmin

The class inheritance graph has changed in Django 1.6 compared to Django 1.5.
In particular, class BaseModelAdmin in django.conrib.admin.options.py now inherits
from six.with_metaclass(RenameBaseModelAdminMethods), while previously it inherited
from six.with_metaclass(forms.MediaDefiningClass). As a result, ModelAdmin's metaclass
ModelAdminMeta was no longer a subclass of metaclasses of all ModelAdmin's bases.

---
Set STATIC_ROOT to '' during testing

Empty string ('') was the default value of STATIC_ROOT in Django 1.5.
In django 1.6, this value changed to None. The test settings file
relies on this value being equal to ''.

---
Set default to False for BooleanFields without defaults

In Django 1.5, if the programmer hasn't provided a default value
for a BooleanField, it was set to False. In Django 1.6 it is set
to None instead. Because of that, every BooleanField's default
value must be now explicitly set to False.
https://docs.djangoproject.com/en/1.6/releases/1.6/#booleanfield-no-longer-defaults-to-false

---
Upgrade to the new transaction APIs

The transaction management model has changed in Django 1.6,
and the old APIs were deprecated:
https://docs.djangoproject.com/en/1.6/releases/1.6/#new-transaction-management-model

---
Change the default Celery broker to SQLAlchemy (with SQLite)

Previously the default for Celery was to use the Django DB as a broker.
This caused a deadlock when the unpack manager tried to pass a message to sioworkers
and then wait for the result, because there was a transaction running inside
the Django database. Now Celery simply uses a different database for the purpose
of passing messages.

---
Change uidb36 parameter to uidb64 in templates

Before 1.6, Django used base 36 encoding of the User primary key in the password
reset views and URLs. These views have been modified to take a uidb64 parameter
instead of uidb36. Templates reversing this view needed to be modified accordingly.
https://docs.djangoproject.com/en/1.6/releases/1.6/#django-contrib-auth-password-reset-uses-base-64-encoding-of-user-pk

---
Adjust to a WSGIRequest bugfix

There was a bug in Django 1.5 where a WSGIRequest instance didn't have
a resolver_match field if not explicitly set from outside. Now it defaults
to None. Code relying on previous behavior needed to be fixed.
https://github.com/django/django/commit/48ce167d895b7e2a9d00884a4a8679851fa890af

---
Explicitly silence some NoReverseMatch exceptions

In Django 1.5, when a NoReverseMatch exception was raised from a method
when rendering a template, it was silenced and the method returned
"(None)". It is no longer being silenced in Django 1.6, so we must
do it explicitly.
https://docs.djangoproject.com/en/1.6/releases/1.6/#miscellaneous

---
Expecting 400 status code instead of SuspiciousOperation exception in tests

Since Django 1.6, when a SuspiciousOperation reaches the WSGI handler,
a handler400 mechanism and default view are used to return
a HttpResponseBadRequest, when previously this resulted in
an InternalServerError. Some tests needed to be changed accordingly.
https://docs.djangoproject.com/en/1.6/releases/1.6/#minor-features

---
Fix a translation bug in django/contrib/auth by overriding the translation

---
Change has_auto_field to needs_explicit_pk_field in templates

In a Django 1.6 update the function has_auto_field has been renamed
to needs_explicit_pk_field. This caused TabularInline and StackedInline
to render incorrectly. Some templates needed to be changed accordingly.
https://github.com/django/django/commit/3aad955ea8db1592fad0012155eaa25b72e50dc5

---
Update the developer documentation

---
Set session serializer to PickleSerializer

The default session serializer was changed in Django 1.6 to JSONSerializer
for security reasons. For backwards compatibility it is set to
PickleSerializer, the previous default (in particular, clock needs to be able
to serialize datetimes). This should be changed in near future.
https://docs.djangoproject.com/en/1.6/releases/1.6/#default-session-serialization-switched-to-json

Change-Id: I0c94bb7771090a38999ee89e08dda3208570b217