Rename {interaction => keystroke}.js

In 766fb4e0d338d494e62731703096803fac4a7e5c I was originally thinking
all the browser event stuff would go in interaction.js, but now with the
services idea I want to split up separate browser event stuff into
separate files.
Node::keystroke takes Controller rather than Cursor

Prep for moving all the high-level Cursor methods that call Node methods
that call low-level Cursor methods, to be methods on the Controller
instead.
Move `escapeDir` from Cursor to Controller
Fix Controller::escapeDir not chainable #tiny
Add Node::moveOutOf that should never be called
Move `move{Dir,Left,Right}` from Cursor to Controller

Also update text.test.js and updown.test.js. Note that haven't moved
over moveUp/moveDown, so updown.test.js momentarily hacky.
Move `move{Up,Down}` from Cursor to Controller

Also the onNotify(), and add a temporary Cursor.onNotify() classmethod
while the notify stuff is all on the cursor.

Get to remove temp updown.test.js hack (which was only for while
`move{Left,Right}` were on the Controller but `move{Up,Down}` were on
the Cursor).
Move backspace/deleteForward from Cursor to Controller

I'm pretty sure that the monkey-patched .write() in
RootMathCommand::createBlocks() is broken and will select rather than
delete the empty RootMathCommand, but I don't think it was broken by
this commit, this diff shouldn't change that behavior at all. Whatever,
RootTextBlock needs to be overhauled anyway.
Move `select{Left,Right}` from Cursor to Controller

MathCommand::deleteTowards called Cursor::selectDir, but can just inline
the relevant parts of Cursor::selectDir (in fact, just the selection API
that is lower-level than the Cursor methods that are being moved to the
Controller).
Inline Cursor::prepareMove()

It's only ever used in Node::keystroke in keystroke.js. I never liked
the prepare* methods, whereas I very much like the merger with the
notification system.
Move onNotify 'move' or 'upDown' to Controller

Next to escapeDir, moveDir, and moveUpDown, which call .notify('move')
and .notify('upDown').
Move onNotify 'edit' from Cursor to Controller

Next to Controller::deleteDir, its main usage. (Also used in
Cursor::writeLatex and the cut event handler in textarea.js, which are
kinda secondary to the 'Backspace' key, I feel like. Really though, I
want to move the notify stuff from Cursor to Controller, and this is the
last onNotify() call in cursor.js.)
Inline Cursor::prepareEdit into its sole use

...in the cut event handler in textarea.js.
Inline Cursor::prepareWrite

The inlined result is kinda uglier than before, but gets rid of the last
of the Cursor::prepare* methods.
Move onNotify, ::notify from Cursor to Controller #big

Woooh!
Merge branch 'refactor.notify-service' into refactor.keystroke
Remove overridden notify stuff from controller.js #whoops #typo

onNotify() is defined with a FunctionDeclaration, has to be (and is) in
keystroke.js
Merge pull request #234 from mathquill/refactor.keystroke

Refactor: new keystroke.js; also, move notify to Controller