Adjacent SupSub's always merged into one command #big

Just a subscript or superscript by itself is still a SupSub with only 1
block, but adjacent ones (like `_a^b`) are now combined into a SupSub
with 2 blocks, with CSS similar to Fraction's to stack one above the
other, rather than 2 adjacent SupSub commands stacked with negative
margins making them overlap calculated "manually" in JS by
SupSub::edited() (formerly redraw()).

Further, typing _ or ^ adjacent to an existing SupSub will not insert a
new SupSub, but rather insert the cursor into that side of the SupSub.

How:

When you first type (or render from LaTeX) _ or ^, they are momentarily
always a SupSub with only 1 block, either only a subscript or only a
superscript. Then, right after .postOrder('finalizeTree'),
finalizeInsert now does .postOrder('contactWeld') so that adjacent
"weldable" nodes can "contact weld" together, i.e. if there is a
subscript adjacent to a superscript, one is removed and the other
becomes a SupSub with 2 blocks; and if there are any two adjacent
subscripts or superscripts, they're combined into a single subscript or
superscript whose contents is the concatenation of the originals.

(Note:
- "Contact welding" is also something I had wanted to do with
  TextBlock's and had been implemented super hackily before, but it
  looks like I gave up on that?
- .postOrder('finalizeTree') needs to happen first because
  SupSub::contactWeld relies on the .sub and .sup of the rightward
  SupSub having been initialized by .finalizeTree().
- This has to be done in finalizeTree for it to work when writing _ or ^
  with .writeLatex() (exposed by the public API method
  EditableField::write()) adjacent to an existing SupSub, it can't be
  done in createLeftOf and parser, because createLeftOf isn't called and
  parser is called too early, before the SupSub can know about SupSub's
  it's being written next to.
)

Move insLeftOfMeUnlessAtEnd out of the private SupSub closure, for use
by its descendants (subscript and superscript), but unchanged.

Move prayWellFormed out of the private Fragment closure, for use in
tests.

SupSub::latex() now requires SupSub::finalizeTree called first (to set
up .sub and .sup), so latex.test.js has to .postOrder('finalizeTree').
Add SupSub LaTeX test case #test
Fix typo in comment #comment #typo
SupSub::contactWeld needs to call .remove()

otherwise won't call dispose, minor memory leak #fuckManualMemoryManagement
Add empty cases to SupSub test case #test
Add writing empty SupSub's test case #test
Improve cursor edge case after .write('^2')

For example, if the cursor is just before a superscript:

    x|^n

and you .write('^2'), they get "contact welded":

    x^{2n}

but the cursor should still be right of the thing just typed, and left
of the stuff originally to its right:

    x^{2|n}

contactWeld now takes an optional cursor, which will be checked if the
above special case applies and needs to be put anywhere special.
Only Controller::writeLatex passes in the optional cursor (to
MathElement::finalizeInsert, which passes it straight through to
.postOrder('contactWeld', cursor). MathCommand::createLeftOf previously
passed in an vestigal, ignored cursor to .finalizeInsert(), now it is
important that createLeftOf NOT pass in a cursor, because createLeftOf
calls .placeCursor()).
Fix LaTeX with 3 alternating SupSub's in a row

Tree was being left malformed by .addBlock, but it doesn't matter unless
2 SupSub's are welded and then are welded into a 3rd, resulting in
both a .sub AND a .sup being welded away.
Fix typing and writing LatexFragment's
Add TODO comment to .supsub/.fraction CSS #comment
Fix comment typo #comment #typo
SupSub blocks deleted one at a time inst. of unwrapping

See new test case for example.

So that no less convenient than before, when SupSub's were separate
commands respace'd on top of each other.

Unfortunately, a SupSub instance can now go from being subscript-only to
being superscript-only, so .addBlock() has to dynamically check what
kind the current instance is, rather than using polymorphism.
Merge pull request #246 from mathquill/fix.SupSub

Adjacent SupSub's always merged into one command #big