key/value field drop-in replacement for `TranslatedField`

r? @diox 

# TODO:
- Use a distributed key-value store (like riak)
- Cache the calls to redis on the object
- Key off of language (and have an object of all the {'name': 'Name', 'description': 'Description'} for each `{table}:{pk}:{lang}` instead of `{table}:{pk}:{field}`
- Use pickle instead of JSON
- Migration for other table's `translations` FKs
- Migration that populates the data store from all the translations from the translations table
- Consider writing a `TextField` wrapper instead of just registering ordinary `TextField` fields
- Add `default_language` columns

Sample commands:

```python
In [1]: Category.objects.create(type=11, name='The Category')
09:54:25 django.db.backends:DEBUG (0.004) INSERT INTO `categories` (`created`, `modified`, `name`, `slug`, `addontype_id`, `application_id`, `count`, `weight`, `misc`, `carrier`, `region`) VALUES ('2013-09-26 09:54:25', '2013-09-26 09:54:25', 'The Category', '', 11, NULL, 0, 0, 0, NULL, NULL); args=[u'2013-09-26 09:54:25', u'2013-09-26 09:54:25', 'The Category', '', 11, None, 0, 0, False, None, None] :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50
09:54:26 django.db.backends:DEBUG (0.000) SELECT (1) AS `a` FROM `categories` WHERE `categories`.`id` = 189  LIMIT 1; args=(189,) :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50
09:54:26 django.db.backends:DEBUG (0.002) UPDATE `categories` SET `created` = '2013-09-26 09:54:25', `modified` = '2013-09-26 09:54:26', `name` = 'The Category', `slug` = '', `addontype_id` = 11, `application_id` = NULL, `count` = 0, `weight` = 0, `misc` = 0, `carrier` = NULL, `region` = NULL WHERE `categories`.`id` = 189 ; args=(u'2013-09-26 09:54:25', u'2013-09-26 09:54:26', 'The Category', '', 11, 0, 0, False, 189) :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50
Out[1]: <Category: The Category>

In [2]: c=Category.objects.order_by('-id')[0]
09:54:26 django.db.backends:DEBUG (0.000) SELECT `categories`.`id` FROM `categories` ORDER BY `categories`.`id` DESC LIMIT 1; args=() :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50
09:54:26 django.db.backends:DEBUG (0.000) SELECT `categories`.`id`, `categories`.`created`, `categories`.`modified`, `categories`.`name`, `categories`.`slug`, `categories`.`addontype_id`, `categories`.`application_id`, `categories`.`count`, `categories`.`weight`, `categories`.`misc`, `categories`.`carrier`, `categories`.`region` FROM `categories` WHERE `categories`.`id` IN (189); args=(189,) :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50

In [3]: c.name
Out[3]: <Trans: The Category>

In [4]: unicode(c.name)
Out[4]: u'The Category'

In [5]: c.name = {'fr': 'Le Category'}

In [6]: c.save()
09:54:31 django.db.backends:DEBUG (0.000) SELECT (1) AS `a` FROM `categories` WHERE `categories`.`id` = 189  LIMIT 1; args=(189,) :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50
09:54:31 django.db.backends:DEBUG (0.001) UPDATE `categories` SET `created` = '2013-09-26 09:54:25', `modified` = '2013-09-26 09:54:31', `name` = '{\'fr\': \'Le Category\'}', `slug` = '', `addontype_id` = 11, `application_id` = NULL, `count` = 0, `weight` = 0, `misc` = 0, `carrier` = NULL, `region` = NULL WHERE `categories`.`id` = 189 ; args=(u'2013-09-26 09:54:25', u'2013-09-26 09:54:31', u"{'fr': 'Le Category'}", u'', 11, 0, 0, False, 189) :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50
09:54:31 django.db.backends:DEBUG (0.000) SELECT (1) AS `a` FROM `categories` WHERE `categories`.`id` = 189  LIMIT 1; args=(189,) :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50
09:54:31 django.db.backends:DEBUG (0.001) UPDATE `categories` SET `created` = '2013-09-26 09:54:25', `modified` = '2013-09-26 09:54:31', `name` = '{\'fr\': \'Le Category\'}', `slug` = '', `addontype_id` = 11, `application_id` = NULL, `count` = 0, `weight` = 0, `misc` = 0, `carrier` = NULL, `region` = NULL WHERE `categories`.`id` = 189 ; args=(u'2013-09-26 09:54:25', u'2013-09-26 09:54:31', u"{'fr': 'Le Category'}", u'', 11, 0, 0, False, 189) :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50

In [7]: # Still English.

In [8]: unicode(c.name)
Out[8]: u'The Category'

In [9]: c.name.__dict__()
Out[9]: {u'en-us': u'The Category', u'fr': u'Le Category'}

In [10]: import tower

In [11]: tower.activate('fr')

In [12]: unicode(c.name)
Out[12]: u'Le Category'

In [13]: tower.activate('en-US')

In [14]: unicode(c.name)
Out[14]: u'The Category'

In [15]: tower.activate('ar')

In [17]: c.name = 'New Fallback'

In [18]: c.save()
09:55:06 django.db.backends:DEBUG (0.000) SELECT (1) AS `a` FROM `categories` WHERE `categories`.`id` = 189  LIMIT 1; args=(189,) :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50
09:55:06 django.db.backends:DEBUG (0.001) UPDATE `categories` SET `created` = '2013-09-26 09:54:25', `modified` = '2013-09-26 09:55:06', `name` = 'New Fallback', `slug` = '', `addontype_id` = 11, `application_id` = NULL, `count` = 0, `weight` = 0, `misc` = 0, `carrier` = NULL, `region` = NULL WHERE `categories`.`id` = 189 ; args=(u'2013-09-26 09:54:25', u'2013-09-26 09:55:06', 'New Fallback', u'', 11, 0, 0, False, 189) :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50
09:55:06 django.db.backends:DEBUG (0.000) SELECT (1) AS `a` FROM `categories` WHERE `categories`.`id` = 189  LIMIT 1; args=(189,) :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50
09:55:06 django.db.backends:DEBUG (0.002) UPDATE `categories` SET `created` = '2013-09-26 09:54:25', `modified` = '2013-09-26 09:55:06', `name` = 'New Fallback', `slug` = '', `addontype_id` = 11, `application_id` = NULL, `count` = 0, `weight` = 0, `misc` = 0, `carrier` = NULL, `region` = NULL WHERE `categories`.`id` = 189 ; args=(u'2013-09-26 09:54:25', u'2013-09-26 09:55:06', 'New Fallback', u'', 11, 0, 0, False, 189) :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50

In [19]: c.name.__dict__()
Out[19]: {u'ar': u'New Fallback', u'en-us': u'The Category', u'fr': u'Le Category'}

In [20]: c.name
Out[20]: <Trans: New Fallback>

In [21]: unicode(c.name)
Out[21]: u'New Fallback'

In [22]: c = Category.objects.order_by('-id')[0]
09:55:23 django.db.backends:DEBUG (0.000) SELECT `categories`.`id` FROM `categories` ORDER BY `categories`.`id` DESC LIMIT 1; args=() :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50
09:55:23 django.db.backends:DEBUG (0.000) SELECT `categories`.`id`, `categories`.`created`, `categories`.`modified`, `categories`.`name`, `categories`.`slug`, `categories`.`addontype_id`, `categories`.`application_id`, `categories`.`count`, `categories`.`weight`, `categories`.`misc`, `categories`.`carrier`, `categories`.`region` FROM `categories` WHERE `categories`.`id` IN (189); args=(189,) :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50

In [23]: c.name
Out[23]: <Trans: New Fallback>

In [24]: unicode(c.name)
Out[24]: u'New Fallback'

In [25]: c.name.__dict__()
Out[25]: {u'ar': u'New Fallback', u'en-us': u'The Category', u'fr': u'Le Category'}

In [26]: c.delete()
09:55:27 django.db.backends:DEBUG (0.003) SELECT `zadmin_featuredapp`.`id` FROM `zadmin_featuredapp` INNER JOIN `addons` ON (`zadmin_featuredapp`.`app_id` = `addons`.`id`) WHERE (NOT (`addons`.`status` = 11 ) AND `zadmin_featuredapp`.`category_id` IN (189)); args=(11, 189) :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50
09:55:27 django.db.backends:DEBUG (0.001) SELECT `addons_categories`.`id` FROM `addons_categories` WHERE `addons_categories`.`category_id` IN (189); args=(189,) :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50
09:55:27 django.db.backends:DEBUG (0.002) SELECT `categories_supervisors`.`id` FROM `categories_supervisors` WHERE `categories_supervisors`.`category_id` IN (189); args=(189,) :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50
09:55:27 django.db.backends:DEBUG (0.001) SELECT `app_collections`.`id` FROM `app_collections` WHERE ("ar"="ar" AND `app_collections`.`category_id` IN (189)) ORDER BY `app_collections`.`id` DESC; args=(189,) :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50
09:55:27 django.db.backends:DEBUG (0.002) DELETE FROM `categories` WHERE `id` IN (189); args=(189,) :/Users/chris/.virtualenvs/z/lib/python2.6/site-packages/django/db/backends/util.py:50
```