Add a new categorizer widget that is much easier to use

Summary: This is a drop-in replacement for the existing categorizer and uses the exact same props.

Test Plan:
Locally using things like [[ http://localhost:9000/test.html#content=%7B%22question%22%3A%7B%22content%22%3A%22Leila%20is%20buying%20a%20panda%20doll.%20The%20price%20of%20the%20doll%20is%20%24x%24%20dollars%2C%20and%20she%20also%20has%20to%20pay%20a%20%247%5C%5C%25%24%20tax.%20%5Cn%5Cn**Match%20the%20expressions%20to%20their%20meaning%20for%20Leila.**%20%5Cn%20%5Cn(Multiple%20expressions%20may%20fit%20the%20same%20description.%20Place%20any%20expressions%20that%20are%20not%20needed%20in%20the%20%5C%22Not%20used%5C%22%20category.)%5Cn%5Cn%5B%5B%E2%98%83%20categorizer%201%5D%5D%22%2C%22images%22%3A%7B%7D%2C%22widgets%22%3A%7B%22categorizer%201%22%3A%7B%22type%22%3A%22categorizer%22%2C%22graded%22%3Atrue%2C%22options%22%3A%7B%22items%22%3A%5B%7B%22content%22%3A%22%24x%24%22%2C%22location%22%3A%7B%22category%22%3A0%2C%22position%22%3A0%7D%7D%2C%7B%22content%22%3A%22%24x%20%2B%200.07%24%22%2C%22location%22%3A%7B%22category%22%3A0%2C%22position%22%3A1%7D%7D%2C%7B%22content%22%3A%22%241.07x%24%22%2C%22location%22%3A%7B%22category%22%3A0%2C%22position%22%3A2%7D%7D%2C%7B%22content%22%3A%22%24x%20%2B%200.07x%24%22%2C%22location%22%3A%7B%22category%22%3A0%2C%22position%22%3A3%7D%7D%2C%7B%22content%22%3A%22%24x%20%2B%201.07%24%22%2C%22location%22%3A%7B%22category%22%3A0%2C%22position%22%3A4%7D%7D%2C%7B%22content%22%3A%22%240.07x%24%22%2C%22location%22%3A%7B%22category%22%3A0%2C%22position%22%3A5%7D%7D%2C%7B%22content%22%3A%22%240.93x%24%22%2C%22location%22%3A%7B%22category%22%3A0%2C%22position%22%3A6%7D%7D%5D%2C%22correctLocations%22%3A%5B%7B%22category%22%3A1%2C%22position%22%3A30%7D%2C%7B%22category%22%3A4%2C%22position%22%3A27%7D%2C%7B%22category%22%3A3%2C%22position%22%3A18%7D%2C%7B%22category%22%3A3%2C%22position%22%3A35%7D%2C%7B%22category%22%3A4%2C%22position%22%3A26%7D%2C%7B%22category%22%3A2%2C%22position%22%3A32%7D%2C%7B%22category%22%3A4%2C%22position%22%3A34%7D%5D%2C%22categoryHeaders%22%3A%5B%22The%20price%20of%20Leila's%20panda%20doll%20before%20tax%22%2C%22The%20amount%20of%20tax%20Leila%20pays%22%2C%22Leila's%20total%20bill%20for%20the%20panda%20doll%22%2C%22(Not%20used)%22%5D%7D%7D%7D%7D%2C%22answerArea%22%3A%7B%22type%22%3A%22multiple%22%2C%22options%22%3A%7B%22content%22%3A%22Drag%20the%20expressions%20to%20the%20corresponding%20descriptions.%22%2C%22images%22%3A%7B%7D%2C%22widgets%22%3A%7B%7D%7D%2C%22calculator%22%3Afalse%7D%2C%22hints%22%3A%5B%7B%22content%22%3A%22We%20are%20told%20in%20the%20problem%20that%20the%20price%20before%20tax%20is%20%24x%24%20dollars.%22%2C%22images%22%3A%7B%7D%2C%22widgets%22%3A%7B%7D%7D%2C%7B%22content%22%3A%22If%20the%20tax%20is%20%247%5C%5C%25%24%20of%20%24x%24%2C%20which%20expression%20represents%20the%20dollar%20amount%20of%20the%20tax%3F%5Cn%22%2C%22images%22%3A%7B%7D%2C%22widgets%22%3A%7B%7D%7D%2C%7B%22content%22%3A%22%247%5C%5C%25%24%20of%20%24x%24%20is%20%240.07x%24%2C%20so%20this%20is%20the%20expression%20for%20the%20amount%20of%20tax%20Leila%20pays.%22%2C%22images%22%3A%7B%7D%2C%22widgets%22%3A%7B%7D%7D%2C%7B%22content%22%3A%22To%20find%20Leila's%20total%20bill%2C%20we%20need%20to%20add%20the%20tax%20to%20the%20original%20price.%20%5Cn%5Cn%24%5C%5Cqquad%20%20x%20%2B%200.07x%24%5Cn%5CnThis%20is%20one%20of%20the%20options.%20Are%20any%20of%20the%20other%20expressions%20similar%20to%20this%3F%22%2C%22images%22%3A%7B%7D%2C%22widgets%22%3A%7B%7D%7D%2C%7B%22content%22%3A%22We%20can%20use%20the%20distributive%20property%20to%20factor%20the%20%24x%24%20out%20of%20each%20term.%20Then%20we%20can%20combine%20the%20coefficients%2C%20and%20we'll%20have%20a%20new%20expression%20equivalent%20to%20the%20old%20one.%5Cn%5Cn%24%5C%5Cbegin%7Balign%7D%5C%5Cqquad%200.07%20x%20%2B%20x%20%26%3D%200.07%20x%20%2B%201x%20%5C%5C%5C%5C%5Cn%26%3D(0.07%20%2B1)x%20%5C%5C%5C%5C%5Cn%26%3D1.07x%20%5C%5Cend%7Balign%7D%24%20%20%22%2C%22images%22%3A%7B%7D%2C%22widgets%22%3A%7B%7D%7D%2C%7B%22content%22%3A%22%24x%24%20is%20the%20price%20of%20Leila's%20new%20doll%20before%20tax.%20%20%5Cn%5Cn%240.07x%24%20is%20the%20amount%20of%20tax%20Leila%20pays.%20%20%5Cn%5Cn%241.07x%24%20and%20%24x%20%2B%200.07x%24%20are%20equivalent%20expressions%20for%20Leila's%20total%20bill%20for%20the%20panda%20doll.%20%20%5Cn%5CnThe%20other%20expressions%20are%20not%20useful%20here.%22%2C%22images%22%3A%7B%7D%2C%22widgets%22%3A%7B%7D%7D%5D%7D | this ]].
Also, after subperseusing in webapp, take an existing item like [[ http://stable.ka.local/math/algebra/introduction-to-algebra/writing-expressions-tutorial/e/interpreting-expressions/edit/x878ad61a | x878ad61a ]] and use developer json mode to change categorization to categorizer everywhere in the json. Save the item and preview. Verify behavior when answering correctly, incorrectly, and incompletely.

Reviewers: jack, alex

Reviewed By: alex

Subscribers: jack, justinjaffray

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