Use HTMLParser rather than lxml to extract strings -- it's 5-6x faster!

Summary:
The downside is it assumes well-formed html (since, despite the name,
it only lexes, it doesn't actually parse).  One upside is it correctly
extracts line numbers now.

As part of this change, I fixed the tests to have line number
information.  (I also changed the test to correctly identify when a
string was in a file multiple times, which may or may not represent a
bugfix in the new code.  It's certainly better, in any case.)  This
required changing a lot of 'golden' files.  To make life easier for
this, I changed extract_strings to 'pretty-print' the json, rather
than putting it on one line.

To make the extract-strings test more reproducible, I copied the
exercise files into the extract-strings test directory, rather than
using the 'live' exercise files.  As it was, the tests would start
failing when someoned edited the live exercises, which wasn't great.

Since extract_strings no longer uses lxml, a bunch of lxml
functionality was moved from extract_strings.py to
lint_i18n_strings.py (which still uses lxml), which used to import it
from extract_strings but now just defines it directly.  No linting
functionality was (intentionally) changed.

Fix clean-exercises, now that get_page_html() has moved to another file.

Also add a TODO to use HTMLParser in more tools in this directory.

Test Plan:
./lint_i18n_strings_test.py
./extract_strings_test.py

Ran
   python ./clean-exercises.py ../exercises/khan-exercise.html
and had it complete without error.

Reviewers: john

Reviewed By: john

CC: alpert

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