Do better handling of translation within function calls.

Summary:
In general, we now do a better job of handling already-translated.
Each handler-class has a first-level function, already_translated(),
that takes a segment and says if it's already been translated or not.

This helps prevent double-translation (e.g. _(_("foo"))), but here I
use it to say whether a function argument has already been translated,
so we don't ask the user to translate '{{ foo(_("bar")) }}'.

This was all prompted by a user report that we asked him to translate
   {{ fn(_("foo")) }} {{bar}}
-- the way it looked to him, we were asking him to translate bar or
something.  That prompted this examination.

One thing I realized is that before we were saying if one function arg
was translated, we assumed they were all translated.  Now we don't do
that anymore: each function arg must live or die on its own.  As a
result, several functions that were fine before i18nize_templates will
now want to change.

In a few cases, we can tell those function arguments don't need to be
translated.  So I added a new exceptions class to handle those
(e.g. {{ fn("http://...") }}).

Totally unrelatedly, I did some code cleanup -- all the stuff around
LIT and LITA is just escaping ' and " in places where it's not
technically needed but makes my editor (emacs) happier.  The things I
do for emacs.

Test Plan:
tests/i18nize_templates_test.py

I also ran
   find templates -type f | xargs ~/khan/third_party/i18nize_templates/i18nize_templates/__init__.py

before and after this change, and compared the changes it made each
time.  The only differences were functions where one arg was
translated and another wasn't, e.g.

-    {{ tags.h3(_("Activity"), style="text-transform: uppercase") }}
+    _TODO({{ tags.h3(_("Activity"), style="text-transform: uppercase") }})

We have to mark 'text-transform...' as i18n_do_not_translate().

Reviewers: benkomalo, james

Reviewed By: james

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