kill 'onText' event, directly do cursor.write(ch)

bubbling the 'onText' event is a heavyweight thing that's unused,
delegating to surrounding nodes like the rest of the cursor's methods
now do is much simpler and flexible
Add vector LaTeX command (\vec)

The vector command places a right arrow above the text name of the vector.
This commit models the rendering of LaTeX where the arrow does not
extend to the full width of the vector name.
'onKey' event bubbles with cursor as an argument

much cleaner than storing it as this.cursor on createLeftOf, like
LatexCommandInput and Vector were doing.

Note that the entire line of the this.cursor assignment in
LatexCommandInput::createLeftOf could be removed because the
insAtRightEnd was unnecessary, placeCursor already does that.

This also fixes \vector when rendered from LaTeX (as if we give a shit,
that shit should've been on a experimental branch anyway)
Merge branch 'feature.rm-vector' into refactor.key-events

because fixing Vector::onKey is too much trouble.

Conflicts:
	src/commands.js
in RootMathBlock::onKey, use cursor.root instead of this

prep for non-bubbling cursor.parent.keystroke()

in fact, for Ctrl-A, directly acting on the root is also cleaner
cursor.parent.keystroke() replaces bubbling 'onKey'

since 'keystroke' isn't bubbled, it now has to be on Node.prototype
instead of just on the root. Don't want the huge switch/case in tree.js,
so it goes in the newly created interaction.js, the idea is eventually
all the browser events stuff in rootelements.js will be moved there.

also since 'keystroke' isn't bubbled, LatexCommandInput::onKey has to be
moved to a .keystroke on the MathBlock inside the LatexCommandInput.

when overriding keystroke, instead of return false to block bubbling,
have to explicitly call _super.keystroke to continue default.
Spacebar moved from {Node => MathBlock}::keystroke

Node should have the functionality shared between text and math, and
additional functionality for math (Spacebar) should be added by math.js,
not added in Node than having to be subtracted by text.js

Cursor::escapeDir now only deals with Tab (I kind of think it shouldn't
even be dealing with the event stuff at all)

unfortunately RootTextBlock extends MathBlock and still has to override
keystroke for now
supervisor runs make instead of index.js

no need for verbose child_process code in index.js, just use make to
guarantee `make test` has run before the server is started up again
tiny handwritten static server instead of Connect

Connect isn't super heavyweight, but it and all its dependencies can be
replaced by this tiny thing

it's under script/, instead of having index.js polluting the top level
don't expose entire filesystem to the world

it's a not a huge deal since the server is only exposed to the local
network, and you can specify HOST=localhost to restrict to only your
computer, but still, it's pretty dumb to make it possible for anyone at
all to read your /etc/passwd with http://localhost:9292//etc/passwd

[path.normalize][] fixes this, collapsing multiple slashes and any
directory followed by ../, plus removing all leading /../'s (so no
http://localhost:9292/../../../../../etc/passwd funny business)

[path.normalize]: http://nodejs.org/api/path.html#path_path_normalize_p
log requests, like Connect's static file server

even better, because it has a timestamp on the request
if err, 404 or 500 instead of 200-ing a blank response
fix #190 $ at end of TextBlock causes errors later

2a4189c7be7162622d9c9b3b252c9c3f5d5b843f should've done this:
https://github.com/mathquill/mathquill/commit/2a4189c7be7162622d9c9b3b252c9c3f5d5b843f#L0R492
fix #152 renderLatex errors if selected to edge

after mutating this.ends, writeLatex disowns the selection, but the ends
of the selection are now malformed
when emptying root block, .postOrder('dispose')
mv LatexCommandInput's block's .write/keystroke to createBlocks

where we're already also defining .focus and .blur on the block
added cssclass latex command
inline and rm Cursor::{write,insertCh}

only createRoot used Cursor::write, and only Cursor::write and the
'cmd' public API call used Cursor::insertCh

this also makes the 'key' and 'text' textarea manager event handlers in
createRoot symmetrical (both call methods on cursor.parent)

I still dislike prepareWrite, but by removing unnecessary indirection
this will make refactoring it away later clearer.
Merge pull request #186 from mathquill/refactor.key-events

Don't bubble 'onKey' and 'onText' events, just delegate method calls
implement TextColor::latex