Added support for focusing, blurring, and accessing DOM node of provided paths

Summary:
The Perseus ItemRenderer now supports a number of new behaviors. For starts, you can call
getInputPaths() to get all the 'paths' to inputs for a given item. You can then call focusPath(),
blurPath(), or getDOMNodeForPath() with any of these paths as an argument, and Perseus will focus,
blur, or return the DOM node, respectively. This change also includes a new, optional API for widgets,
as some widgets will have multiple inputs embeded within them, while others will be an input themselves,
and others will have no inputs whatsoever. One-one-by:

- For widgets that are inputs themselves, you can return `this` in the widgets' `getInputPaths` function to deem that a legit input.
- For widgets with inputs embedded, an array of arrays should be returned in `getInputPaths`, where each item in the array is a focusable that can be focused when passed as a parameter to the same widget's `focus` function. To see an example of his behavior, check out transformer.jsx. (Note: I don't think the change to transformer.jsx should be landed, but it'll help in understanding how this code works for review's sake).
- For widgets with no inputs, no changes are required.

This change is largely to support the left/right arrows used in the iOS app to navigate between
input fields for an item.

Test Plan:
- (Note: I've set .perseus-focused to make the inputs red for testing's sake. That won't be landed, but is included intentionally.)
- Create a Perseus item with a bunch of input-numbers and expressions in the question area.
- Go into the dev console (of test.html) and try `itemRenderer.getInputPaths()`. Run `itemRenderer.focusPath` on various members of the returned array. Verify that the specified input goes red, and all others are white.
- Add an answer area that is itself an input and verify that focusing between inputs gives the desired behavior (i.e., a single red input between the question and answer area).
- Add multiple inputs in the answer area and verify as above.
- You can also try `itemRenderer.getDOMNodeForPath` with any member of the `getInputPaths` array and verify that it returns the desired node.

Reviewers: jack

Reviewed By: jack

Subscribers: mgp

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