Add in a tool for automatically fixing some i18n issues in exercises. Right now it just fixes pronoun usage.

Summary:
There are some methods that are used in exercises that need to be banned in order to make our translation efforts sane. Some of these methods can be fixed programmatically - which is what I'm attempting to do here.

To start I'm targeting these four methods: `he(NUM)/He(NUM)/his(NUM)/His(NUM)`

I go through all the extracted strings in an exercise and look for `var` elements that contain one of those four methods. If it exists then I make sure that every usage of one of those methods has the same `NUM` specified. If different `NUM`s are used then the file will have to be fixed manually (at the moment only 3 strings in 3 files suffer from this problem).

Assuming the `NUM`s are all the same we then then convert the existing string like so:

    <p><var>He(1)</var> threw a ball!</p>

Becomes:

    <p data-if="isMale(1)">He threw a ball!</p><p data-else>She threw a ball!</p>

(This is using the built-in data-if/data-else scheme used in exercises and makes use of a new method I've introduced: `isMale`.)

This makes it so that each sentence only has a single gender being used and it's being displayed inline (making translation super-simple).

Test Plan: Run `python build/extract_strings.py --fix exercises/*.html`. At the moment it should say that there are four errors (this is correct). If you were to reset all of the exercises back to their original state you woulud see that the script also modifies the files.

Reviewers: csilvers, eater

CC: alpert

Differential Revision: http://phabricator.khanacademy.org/D2124
Fix a number of issues brought up by Craig. Improved the docstrings wherever possible.
Updating i18n branch from master.
Manually fix cases where 3 args were being passed in the plural, which no longer works.
Work-in-progress rewrite of the fix_file handlers.
Rewrote a number of exercises to better handle pluralization (reducing the number of pluralization terms to only one per extracted string).
Use the exercise fixer script to fix all the exercises.
Remove a bunch of words from word-problems that don't need to be pluralized any more. Also remove groupVerb, as it's no longer used.
Fix number of files output from script.
Move linting stuff off into a new file and add some comments.
Remove linting stuff from extract_strings.py and update the Makefile.
Revert earlier run of the linter against the exercises.
Fix some additional, ambiguous, i18n cases.
Re-fix the exercises after fixing a number of bugs in the linter.
Finish documenting the lint_i18n_strings.py script.
Fix some linting issues.
Revert recent fixes.
Fix typo in arithmetic_word_problems.html
Fix pluralization issues in least_common_multiple_and_greatest_common_divisor_word_problems.html.
Fix issues with string argument detection being too greedy.