Function to extract coeffcient for a given term
Basic solving rational expression exercise
Add answer and fraction simplification
Ensure variables don't cancel
Simplify code
Start improving hints
Add an exercise type showing equation not graph
Add method to evaluate an expression
Spell evaluate correctly
Improve hints
Make point_slope_form less rational; fix #49169

Test plan: none

Auditors: alpert
Merge remote-tracking branch 'upstream/master'
Fix scientific mantissa to not use localeToFixed

Summary:
`scientificMantissa` was being used to do math, but `localeToFixed`
was being called on its result, which prevented the math from working in
locales where commas are used instead of decimal points. This fixes that. Fixes
T1057

Test Plan:
Run `make i18n`, open the
multiplying_and_dividing_scientific_notation exercise on dev appserver with
lang=da. Ensure that the question and all hints are rendered correctly (no
`NaN`s, and all the numbers have commas instead of decimal points) and that the
correct answer is accepted.

Reviewers: csilvers

Reviewed By: csilvers

CC: alpert

Maniphest Tasks: T1057

Differential Revision: http://phabricator.khanacademy.org/D2781
Don't accept maxError if we don't specify inexact

Summary:
Before, if inexact was left as "required" but a maxError was still
provided, inexact answers could be provided and would be accepted. This fixes
the problem by changing maxError if the answer isn't supposed to be exact. I
could also try to change the logic down below to account for this, but I think
that this is the easiest way to fix.

Test Plan:
Add `data-max-error="100"` to the solution of an exercise, like
addition_1. Make sure that an answer 100 away from the correct answer isn't
still accepted.

Reviewers: alpert

Reviewed By: alpert

Differential Revision: http://phabricator.khanacademy.org/D2813
Add function to generate string showing how to evaluate
Improve hints to show how to evaluate each expression
More hints
Remove extra hint, fix #50565

Auditors: emily
Use \blue, \green

Fixes #50790.

Auditors: emily
Fix missing cards bug

Summary:
`Exercises.currentCard` was being read out before it was updated with the
number of leaves that the student recieved, causing incorrect data to be sent
to the server. Then, when the data was read back, the incorrect number of
leaves was being shown.

Some background: In certain cases, students would get incorrect card progress
when they loaded an exercise with an incomplete stack. The cases where this
happened were when the data couldn't be loaded from the localStorage cache, and
thus had to depend on server data to show the cards. However, the server was
being sent incorrect data, so the cards were showing incorrect number of leaves.

Test Plan:
Log out. Go to an exercise (say /exercise/addition_1). Do some
problems (don't get 1 leaf), and make sure that you are now a phantom user.
Reload the page, and note that the number of leaves you recieved has been
maintained.

Log in. Go to an exercise, do some problems. Clear localStorage, and then
reload the page. Note that the number of leaves you recieved has been
maintained.

Reviewers: alpert, eater

Reviewed By: alpert

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