Added support for widgets in hints

Summary:
Hints are now capable of containing widgets, operating similarly to the answer area.
This will allow content creators to add helpful (ungraded) widgets to hints, like interactive
graphs, as well as reduce dependence on static images (which can be replaced with image widgets).
Fixes T2742.

Test Plan:
- Run Perseus.
- Create a widget.
- Add a hint and verify that:
    - The hint can contain a single widget that renders in sync with its editor.
    - The hint can contain multiple widgets.
    - Grading operates correctly, ignoring the state of the widgets within hints.
    - The embedded widgets ignore validation during toJSON (try a radio widget and notice that there's no warning if no answer is marked as correct).
    - The embedded widget surives permalink + reload.
- Next, add multiple hints and verify that:
    - Each hint conforms to the above points.
    - Moving a hint around (i.e., up or down in the list) takes its widgets with it.
    - The hint editors line up with their respective content.
- If you're feeling lazy, here's a [shortcut](http://localhost:9000/test.html#content=%7B%22question%22%3A%7B%22content%22%3A%22%5B%5B%E2%98%83%20dropdown%201%5D%5D%22%2C%22images%22%3A%7B%22https%3A%2F%2Fka-perseus-graphie.s3.amazonaws.com%2F56916169cb556dcee247e9e58357a48b389e8b80.png%22%3A%7B%22width%22%3A400%2C%22height%22%3A76%7D%7D%2C%22widgets%22%3A%7B%22dropdown%201%22%3A%7B%22type%22%3A%22dropdown%22%2C%22graded%22%3Atrue%2C%22options%22%3A%7B%22placeholder%22%3A%22ABC%22%2C%22choices%22%3A%5B%7B%22content%22%3A%22DEF%22%2C%22correct%22%3Atrue%7D%2C%7B%22content%22%3A%22GHI%22%2C%22correct%22%3Afalse%7D%5D%7D%7D%7D%7D%2C%22answerArea%22%3A%7B%22type%22%3A%22multiple%22%2C%22options%22%3A%7B%22content%22%3A%22%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%22Here's%20a%20categorizer%20and%20a%20sorter%3A%5Cn%5Cn%5B%5B%E2%98%83%20categorizer%201%5D%5D%5Cn%5Cn%5B%5B%E2%98%83%20sorter%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%22b%22%2C%22g%22%5D%2C%22categories%22%3A%5B%22a%22%5D%2C%22values%22%3A%5B0%5D%7D%7D%2C%22sorter%201%22%3A%7B%22type%22%3A%22sorter%22%2C%22graded%22%3Atrue%2C%22options%22%3A%7B%22correct%22%3A%5B%22%24x%24%22%2C%22%24y%24%22%2C%22%24z%24%22%2C%22%24w%24%22%2C%22%24u%24%22%5D%2C%22layout%22%3A%22vertical%22%2C%22padding%22%3Atrue%7D%7D%7D%7D%2C%7B%22content%22%3A%22Math%20is%20still%20supported%3A%20%24%5C%5Cred3%24%5Cn%5CnNow%2C%20lets%20try%20an%20interactive%20graph%3A%5Cn%5Cn%5B%5B%E2%98%83%20interactive-graph%201%5D%5D%22%2C%22images%22%3A%7B%7D%2C%22widgets%22%3A%7B%22interactive-graph%201%22%3A%7B%22type%22%3A%22interactive-graph%22%2C%22graded%22%3Atrue%2C%22options%22%3A%7B%22step%22%3A%5B1%2C1%5D%2C%22backgroundImage%22%3A%7B%22url%22%3Anull%2C%22scale%22%3A1%2C%22bottom%22%3A0%2C%22left%22%3A0%7D%2C%22markings%22%3A%22graph%22%2C%22labels%22%3A%5B%22x%22%2C%22y%22%5D%2C%22showProtractor%22%3Afalse%2C%22showRuler%22%3Afalse%2C%22rulerLabel%22%3A%22%22%2C%22rulerTicks%22%3A10%2C%22range%22%3A%5B%5B-10%2C10%5D%2C%5B-10%2C10%5D%5D%2C%22gridStep%22%3A%5B1%2C1%5D%2C%22snapStep%22%3A%5B0.5%2C0.5%5D%2C%22graph%22%3A%7B%22type%22%3A%22linear%22%7D%2C%22correct%22%3A%7B%22type%22%3A%22linear%22%2C%22coords%22%3Anull%7D%7D%7D%7D%7D%5D%7D).
- For good measure: grab some JSON from an existing item with hints (e.g., [this one](https://www.khanacademy.org/math/early-math/cc-early-math-measure-data-topic/cc-early-math-measurement/e/measuring-lengths-1/edit/xe0963f645827bf31)) and make sure that it renders properly in Perseus.

Reviewers: jack

Reviewed By: jack

Subscribers: eater

Maniphest Tasks: T2742

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