Fix babel to not try to extract natural-language strings from arrays.

Summary:
We have code like i18n._(foo['title']).  babel is extracting out the
string 'title' for translation, even though it obviously shouldn't be
since it's the key to a dict, not content that's emitted.

I changed the code to treat [] somewhat like () -- it indicates we're
no longer in an arg for _() proper.

Test Plan:
Ran python:
   >>> import third_party.babel.messages.extract as e
   >>> list(e.extract_python(open('topics/render.py'), ['_'], [], {}))
   [(405, '_', None, []), (413, '_', None, []), (1166, '_', None, []), (1168, '_', None, [])]

This correctly says 'nothing to extract from this file' (all those
None's).  Before this change, it emitted:
   [(405, '_', None, []), (413, '_', u'standalone_title', []), (1166, '_', u'videotitle', []), (1168, '_', u'videodescription', [])]
which said 'need to translate standalone_title, videotitle, and
videodescription'.  (The last two are because it treated two strings
as concatenated.)

I also ran 'make i18n' before and after this change, and the diff
showed stuff removed like this:
-#: badges/util_badges.py:317 topics/cache.py:250
-msgid "description"
-msgstr ""
-
-#: topics/cache.py:205
-msgid "description_html"
-msgstr ""
-
 #. I18N: an example search query (gray text in homepage search box)
 #: templatetags.py:228
 msgid "determinant"
@@ -97839,10 +97856,6 @@
 msgid "stabilization of conjugate base III: induction and orbital effects"
 msgstr ""

-#: topics/render.py:413
-msgid "standalone_title"
-msgstr ""
-
-#: topics/cache.py:204 topics/cache.py:226 topics/cache.py:229 topics/cache.py:248
-msgid "title"
-msgstr ""

Everything looked properly removed, to me.

Reviewers: john, chris

Reviewed By: chris

Differential Revision: http://phabricator.khanacademy.org/D2138