setInputValue now works with paths and doesn't use _setWidgetProps

Summary:
setInputValue now passes the new `value` argument all the way down to the widget, which
then handles the remainder of the passed-in 'path' in its own setInputValue function, and (hopefully)
sets its own value. This is more consistent with the rest of the new Perseus API and will also allow
us to extend our current widgets that contain inputs and set their values as well, rather than just
setting the values of widgets that _are_ inputs.

Test Plan:
- Run Perseus.
- Add a bunch of inputs, including some in the answer-area. Here's a [shortcut](http://localhost:9000/test.html#content=%7B%22question%22%3A%7B%22content%22%3A%22%5B%5B%E2%98%83%20input-number%201%5D%5D%5Cn%5Cn%5B%5B%E2%98%83%20numeric-input%201%5D%5D%5Cn%5Cn%5B%5B%E2%98%83%20expression%201%5D%5D%22%2C%22images%22%3A%7B%22https%3A%2F%2Fka-perseus-graphie.s3.amazonaws.com%2Fda8df81c78b22f5c69d477d8eabfb583968eaf84.png%22%3A%7B%22width%22%3A400%2C%22height%22%3A70%7D%2C%22https%3A%2F%2Fka-perseus-graphie.s3.amazonaws.com%2Fb59fc02ca1aae800977b8793ed22f647a1aa75ee.png%22%3A%7B%22width%22%3A425%2C%22height%22%3A150%7D%7D%2C%22widgets%22%3A%7B%22input-number%201%22%3A%7B%22type%22%3A%22input-number%22%2C%22graded%22%3Atrue%2C%22options%22%3A%7B%22value%22%3A%220%22%2C%22simplify%22%3A%22required%22%2C%22size%22%3A%22normal%22%2C%22inexact%22%3Afalse%2C%22maxError%22%3A0.1%2C%22answerType%22%3A%22number%22%7D%2C%22version%22%3A%7B%22major%22%3A0%2C%22minor%22%3A0%7D%7D%2C%22numeric-input%201%22%3A%7B%22type%22%3A%22numeric-input%22%2C%22graded%22%3Atrue%2C%22options%22%3A%7B%22answers%22%3A%5B%7B%22value%22%3Anull%2C%22status%22%3A%22correct%22%2C%22message%22%3A%22%22%2C%22simplify%22%3A%22required%22%2C%22answerForms%22%3A%5B%5D%2C%22strict%22%3Afalse%2C%22maxError%22%3Anull%7D%5D%2C%22size%22%3A%22normal%22%7D%2C%22version%22%3A%7B%22major%22%3A0%2C%22minor%22%3A0%7D%7D%2C%22expression%201%22%3A%7B%22type%22%3A%22expression%22%2C%22graded%22%3Atrue%2C%22options%22%3A%7B%22value%22%3A%22%22%2C%22form%22%3Afalse%2C%22simplify%22%3Afalse%2C%22times%22%3Afalse%2C%22buttonSets%22%3A%5B%22basic%22%5D%2C%22functions%22%3A%5B%22f%22%2C%22g%22%2C%22h%22%5D%7D%2C%22version%22%3A%7B%22major%22%3A0%2C%22minor%22%3A1%7D%7D%7D%7D%2C%22answerArea%22%3A%7B%22type%22%3A%22multiple%22%2C%22options%22%3A%7B%22content%22%3A%22%5B%5B%E2%98%83%20input-number%201%5D%5D%5Cn%5Cn%5B%5B%E2%98%83%20expression%201%5D%5D%22%2C%22images%22%3A%7B%7D%2C%22widgets%22%3A%7B%22input-number%201%22%3A%7B%22type%22%3A%22input-number%22%2C%22graded%22%3Atrue%2C%22options%22%3A%7B%22value%22%3A%220%22%2C%22simplify%22%3A%22required%22%2C%22size%22%3A%22normal%22%2C%22inexact%22%3Afalse%2C%22maxError%22%3A0.1%2C%22answerType%22%3A%22number%22%7D%2C%22version%22%3A%7B%22major%22%3A0%2C%22minor%22%3A0%7D%7D%2C%22expression%201%22%3A%7B%22type%22%3A%22expression%22%2C%22graded%22%3Atrue%2C%22options%22%3A%7B%22value%22%3A%22%22%2C%22form%22%3Afalse%2C%22simplify%22%3Afalse%2C%22times%22%3Afalse%2C%22buttonSets%22%3A%5B%22basic%22%5D%2C%22functions%22%3A%5B%22f%22%2C%22g%22%2C%22h%22%5D%7D%2C%22version%22%3A%7B%22major%22%3A0%2C%22minor%22%3A1%7D%7D%7D%7D%2C%22calculator%22%3Afalse%7D%2C%22itemDataVersion%22%3A%7B%22major%22%3A0%2C%22minor%22%3A1%7D%2C%22hints%22%3A%5B%5D%7D).
- In the console, try:
    - `itemRenderer.setInputValue(["input-number 1"], "11", false)`. Verify that the first element now has an "11" in it.
    - `itemRenderer.setInputValue(["numeric-input 1"], "13", false)`. Verify that the second element now has a "13" in it.
    - `itemRenderer.setInputValue(["expression 1"], "15", false)`. Verify that the third element now has a "15" in it.
    - `itemRenderer.setInputValue(["answer-input-number 1"], "17", false)`. Verify that the first answer-area element now has a "17" in it.
    - `itemRenderer.setInputValue(["answer-expression 1"], "19", false)`. Verify that the second answer-area element now has a "19" in it.
- Note that the brackets around "input-number 1", etc., are optional (for a single-value path), although we may want to change that.
- The truly adventurous can create a transformer with inputs ([shortcut](http://localhost:9000/test.html#content=%7B%22question%22%3A%7B%22content%22%3A%22%5Cn%5Cn%5B%5B%E2%98%83%20transformer%201%5D%5D%22%2C%22images%22%3A%7B%22https%3A%2F%2Fka-perseus-graphie.s3.amazonaws.com%2Fda8df81c78b22f5c69d477d8eabfb583968eaf84.png%22%3A%7B%22width%22%3A400%2C%22height%22%3A70%7D%2C%22https%3A%2F%2Fka-perseus-graphie.s3.amazonaws.com%2Fb59fc02ca1aae800977b8793ed22f647a1aa75ee.png%22%3A%7B%22width%22%3A425%2C%22height%22%3A150%7D%7D%2C%22widgets%22%3A%7B%22transformer%201%22%3A%7B%22type%22%3A%22transformer%22%2C%22graded%22%3Atrue%2C%22options%22%3A%7B%22starting%22%3A%7B%22shape%22%3A%7B%22type%22%3A%22polygon-3%22%2C%22coords%22%3A%5B%5B2%2C2%5D%2C%5B2%2C6%5D%2C%5B7%2C2%5D%5D%7D%2C%22transformations%22%3A%5B%5D%7D%2C%22graphMode%22%3A%22dynamic%22%2C%22listMode%22%3A%22interactive%22%2C%22tools%22%3A%7B%22translation%22%3A%7B%22enabled%22%3Atrue%2C%22required%22%3Afalse%2C%22constraints%22%3A%7B%7D%7D%2C%22rotation%22%3A%7B%22enabled%22%3Atrue%2C%22required%22%3Afalse%2C%22constraints%22%3A%7B%22fixed%22%3Afalse%7D%2C%22coord%22%3A%5B1%2C6%5D%7D%2C%22reflection%22%3A%7B%22enabled%22%3Atrue%2C%22required%22%3Afalse%2C%22constraints%22%3A%7B%22fixed%22%3Afalse%7D%2C%22coords%22%3A%5B%5B2%2C-4%5D%2C%5B2%2C2%5D%5D%7D%2C%22dilation%22%3A%7B%22enabled%22%3Atrue%2C%22required%22%3Afalse%2C%22constraints%22%3A%7B%22fixed%22%3Afalse%7D%2C%22coord%22%3A%5B6%2C6%5D%7D%7D%2C%22drawSolutionShape%22%3Atrue%2C%22gradeEmpty%22%3Afalse%2C%22graph%22%3A%7B%22range%22%3A%5B%5B-10%2C10%5D%2C%5B-10%2C10%5D%5D%2C%22step%22%3A%5B1%2C1%5D%2C%22markings%22%3A%22grid%22%2C%22labels%22%3A%5B%22x%22%2C%22y%22%5D%2C%22backgroundImage%22%3A%7B%22url%22%3Anull%2C%22scale%22%3A1%2C%22bottom%22%3A0%2C%22left%22%3A0%7D%2C%22showProtractor%22%3Afalse%2C%22showRuler%22%3Afalse%2C%22rulerLabel%22%3A%22%22%2C%22rulerTicks%22%3A10%2C%22gridStep%22%3A%5B1%2C1%5D%2C%22snapStep%22%3A%5B0.5%2C0.5%5D%7D%2C%22version%22%3A1.2%2C%22correct%22%3A%7B%22transformations%22%3A%5B%5D%2C%22shape%22%3A%7B%22type%22%3A%5B%22polygon-3%22%5D%2C%22coords%22%3A%5B%5B2%2C2%5D%2C%5B2%2C6%5D%2C%5B7%2C2%5D%5D%2C%22options%22%3A%5B%7B%7D%5D%7D%7D%7D%2C%22version%22%3A%7B%22major%22%3A0%2C%22minor%22%3A0%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%22itemDataVersion%22%3A%7B%22major%22%3A0%2C%22minor%22%3A1%7D%2C%22hints%22%3A%5B%5D%7D)).
    - Create a "Translation" (note: it _has_ to be translation; I didn't bother implementing it for other transformations given that this code will be removed before landing).
    - Run: `itemRenderer.setInputValue(itemRenderer.getInputPaths()[0], 13, false);`
    - Verify that the translation reads (13, 13).

Reviewers: jack

Reviewed By: jack

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