Clean up handling of function arguments inside jinja2 variables.

Summary:
This was always pretty hacky and a big TODO.  Now we have a
mini-parser that tries to parse function arguments -- it's still not
perfect but a lot better than before.  A side-effect is that we can
now mark _TODO's *within* the function, for the args that need
handling, rather than just marking the entire function.  Should be a
lot easier to use.

Refactored this a lot, getting rid of ugly regexps and replacing them
with more robust parsers.  (A TODO would be to use the actual jinja2
parser.  A project for another day.)  I also combined
already_translated() and no_nltext(), since we handle the two the same
(not modifying the input text).

Add support for whitelisting fn args by param.

We now have a consistent way of whitelisting for functions: by
function name, param name, or argument text.  I document all of this,
and also resolve a TODO by adding customization for all three.

I refactored the code now that we have so much customization, into an
_init() routine that we could use during tests (still in progress).

A few typo-fixes found in review.

Test Plan:
tests/i18nize_templates_test.py

tests/i18nize_templates_test.py

(none new)

Reviewers: james

Reviewed By: james

Subscribers: benkomalo

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