Change add_underscore() to recognize text in tagnames isn't nltext.

Summary:
The optimization I put in to tell whether a block of text has no
natural-language text in it was broken, since I didn't treat html tags
specially in it.

It turns out the easiest way to fix this was to have add_underscore()
take the list of segments rather than glomming them all together
before calling add_underscore().  That way add_underscore() gets the
input already separated out into html tags, jinja2 vars, etc.

This simplified add_underscore() a bit, though a lot of the complexity
had to get added back because we support jinja2 vars inside html tags,
so I couldn't assume that a segment was either a jinja2 var or it
wasn't.  Ah well.

(I also realized a case I wasn't handling at all: jinja2
*conditionals* inside html tags.  Another time.)

Test Plan: tests/i18nize_templates_test.py

Reviewers: james

Reviewed By: james

Subscribers: benkomalo

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