Allow expression answer type to take a set of answers

Summary:
I can't pretend I fully understand how answer-type.js works or why it's written the way it is, so what I've done may well be horrible. But as far as I can tell it works and fixes a lot of issues we've been having with the rational expression exercises that were recently converted to use expression entry. It also fixes Issue AI-289737 and might be useful for other things.

Allow expression answer type to take multiple answers

Allow exponents to the zero to be cancelled or not

Allow rational expression to be factored or not

Update more rational expression exercises

Get expression editor to work with multiple answer type again

Update rational expression exercises to accept factored answers were necessary

Update more rational expression exercises

Test Plan:
I've tested at least a couple of exercises in each rational expression exercise and some others that use expression entry. I've also tested the following, which are probably worth re-testing, plus anything else you think I may have missed.
Make sure the normal expression entry exercises still work.
e.g. http://localhost:8000/exercises/writing_expressions_1.html

Make sure expression entry works inside a multiple answer type.
e.g. http://localhost:8000/exercises/inverses_of_functions.html?debug&problem=expression-editor

Expression entry with multiple data options should now work.
http://localhost:8000/exercises/simplifying_expressions_with_exponents.html?seed=81&problem=simplify-exponential-form-full&debug&lang=en
Should now accept an answer of z^-9 and z^9r^0
(Issue AI-289737)

Simplifying_rational_expressions_2 has the most issues because it does accept non-factored answers.
http://localhost:8000/exercises/simplifying_rational_expressions_2.html?seed=88&problem=0&debug&lang=en
Should now accept the answer in the hint: (-7y-10)/(-10y+4)
Also the factored version: (-7y-10)/2/(-5y+2) or (-7y-10)/(2(-5y+2))
Also you should be multiply top and bottom by -1, and it shouldn't accept the original expression.

Multiple expression types should inside a multiple answer type. e.g
http://localhost:8000/exercises/multiplying_and_dividing_rational_expressions_1.html?seed=24&problem=divide&debug&lang=en
Should accept (p-4)/(4p - 6) and (p-4)/(2(2p - 3))
http://localhost:8000/exercises/multiplying_and_dividing_rational_expressions_4.html?debug&problem=A-over-B-and-BC-over-A&seed=133

Other rational expression exercises should all work including
http://localhost:8000/exercises/adding_and_subtracting_rational_expressions.html
http://localhost:8000/exercises/multiplying_and_dividing_rational_expressions_1.html?seed=38&problem=divide&debug&lang=en

Reviewers: eater, emily

Reviewed By: emily

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