estimation_with_decimals: Do i18n a bit better

This still has some awkward sentence building which will need to be fixed sometime but the plurals are better and localeToFixed is called at output time instead of earlier which fixes some NaNs.

Fixes #69471.

Auditors: alex
discount_tax_and_tip_word_problems: i18n

Now everything should be answerable.

Fixes #67864.

Auditors: alex
shifting_and_reflecting_functions: Better colors

Auditors: eater
reading_pictographs: Move stem above pictograph

Auditors: dylan
calculator: Don't check answer when pressing enter

This only crops up when you've partially entered an answer, but this happens especially when there are multiple text boxes.

Fixes #70528.

Test Plan:
Open an exercise with a calculator (such as standard_deviation), type something into the answer box, then press enter. The problem shouldn't be marked wrong.

Auditors: alex
set: With no things, typing nothing is correct

Fixes #70536.

Test Plan:
In absolute_value_equations.html?seed=104&problem=0&debug, clicking 'Check Answer' does nothing, checking 'No solution' only is correct, typing things is wrong (regardless of whether the box is checked).

Auditors: eater
Don't complain about i18n if the text inside \\text isn't natural-language.

Summary:
No need to translate \text{$} or \text{1}!

I use similar logic here that I did in i18nize_templates.py, though
I'm less thorough about the list of non-alnum entities.  I could be
though, if we start to use entities more.

Add several 'non-translatable words' that we consider to be non-alpha even though they're made up of letters: units such as 'mol' and math operators such as 'R' (meaning 'remainder').  We also consider chemical symbols to be non-alpha, but only if the string consists entirely of chemical symbols.

Do the no-alnum checking on a per-\\text basis, not a per-node basis.

A node (e.g. <code>...</code>) can have many \text{}'s in it.  If we
want to ignore a non-alnum \text, we need to do it on a per-\text
basis, not a per-node basis.  So I move the check from the node-based
check in get_match(), to the \text-based checks in
_do_*_text_replace.

I also allow non-whitespace along with chemistry symbols, so you can
have \text{(PO)}_4 without needing to translate.

Test Plan:
build/lint_i18n_strings_test.py

Before my change, the test failed on the new text.html, and after my
change, it passes.

build/lint_i18n_strings_test.py

(same)

Reviewers: john

Reviewed By: john

CC: alpert

Differential Revision: http://phabricator.khanacademy.org/D3896
Update khan-exercises based on the current webapp repo.

Summary:
I did this by running local-only/update_local.sh.  I had to update
update_local a bit first, to account for changes to compress.py since
the last time it was run.

Test Plan:
Ran
   python -mSimpleHTTPServer
and visited
   http://localhost:8000/exercises/absolute_value.html
and everything looked ok still...

Reviewers: eater, alpert

Reviewed By: alpert

Differential Revision: http://phabricator.khanacademy.org/D3949
estimation_with_decimals: Round earlier

Fixes #71081. (Rounding to one digit and then to the nearest int is different than just rounding to the nearest int...)

Auditors: alex
Fix quadrilaterals having overlapping angle text

Fixes #68799 by insuring a minimum side length for quads.
Fix quadrilateral exercises cutting off figures

Changed boxOut's inching amount in the quad exercises
to be more fine-grained.  Avoids having bad luck and
getting part of the figure out of view.
Avoid very obtuse angles overlapping figure lines

Very obtuse angles were not being pushed far enough away
from the figure's lines and needed a bigger term than
only slightly obtuse angles. (This also fixes a comparison
error in that same function)
Merge pull request #71287 from theinternetftw/fix-quad-angle-spacing

Fixes for rendering angle labels and quads
Use underscore's indexOf, as IE8 doesn't have it
Merge pull request #71357 from theinternetftw/fix-indexof-not-available

Use underscore's indexOf, as IE8 doesn't have it built in
scratchpad: Protect against null prevPen

Fixes #71379.

Test Plan: Click down in the top area of the scratchpad next to the colors, then drag down into the actual drawing area. No JS errors should result.

Auditors: alex
Minor hint clarification

Multiple people complained about the exercise due to original
wording (see #67736). This clarifies that hint to avoid those
complaints.
Merge pull request #71547 from theinternetftw/minor-hint-clarification

Minor hint clarification
Fix a random seed of zero being ignored

This was caused by zero being interpreted as false.
Hurray loose typing! Hurray Javascript! :D
Merge pull request #71539 from theinternetftw/fix-zero-seed-not-seeding

Fixes a random seed of zero being ignored