Fix blue focus ring to only be around whole field

...rather than individual blocks, which didn't make any sense, it's the
editable field as a whole that is supposed to be a fake textarea, so
it's the editable field as a whole that should be visibly focused.

Plus it was super distracting when working on parens auto-expanding.
Merge branch 'fix.focus-ring' into feature.auto-expanding-parens
Deduplicate asserts in typing.test.js #cleanup
EditableField::keystroke() now takes list of keys

Obsoletes the move() helper fn in updown.test.js
Parens now have a ghost that auto-expands to end #big

When brackets are now typed, they come with a matching "ghost" bracket
at the far end of the current block. This is done by auto-expanding to
contain the rest of current block and being set to a "one-sided" state.

Then, typing a matching bracket facing the opposite way in a one-sided
bracket "closes" the matching bracket pair around anything between them.
This is done by moving everything up til the ghost outside the bracket
pair and "solidifying" the ghost.

Also, having to add {Node,Fragment}::withDirAdopt() was annoying.
Not sure what could be done about that; it's non-trivial to
directionalize Fragment::adopt, its implementation relies on the
order that .each() iterates through the nodes.
Parens/brackets/braces now deleted one at a time

You can now delete one of a pair of matching brackets, which turns into
a ghost and auto-expands to the far end of the current block, making the
pair one-sided again. Deleting the non-ghost side of a one-sided bracket
deletes it completely.

The .delete{Towards,OutOf}() architecture is so great! But not the
having to monkey-patch methods on the sole MathBlock in finalizeTree,
that sucks.
Fix parens from LaTeX or wrapping seln being one-sided

Had to move HTML template out of constructor, so that .side can be set
later based on whether .replaces() was called or whether the paren was
created by the parser.
Allow mis-matched parens/brackets like [a, b)

Store on each Bracket the characters and control sequences of each side,
and swap them out when closing a one-sided bracket by typing a bracket
facing the opposite way. Also, when deleting one of a mis-matched pair
of brackets, the ghost is always a matching opposite of the remaining
side of the bracket.

Parser now calls Bracket constructor with arguments based on the
characters immediately after each of \left and \right, like it should,
rather than always a matched pair based on the character immediately
after \left.

All the tests that try deleting the parens from various permutations of
an expression with a paren pair in it, change to deleting a mis-matched
bracket pair. It's more general, I'm not really worried about something
working for a mis-matched pair but not a matching one, whereas I am
about the reverse.

Resolves mathquill/mathquill#150.
git add -f build/ for GitHub Pages