Add Selection::join() so can do .join('latex')

a la MathBlock::join()
Fix and test new API methods

Fix MathQuill.MathField::select() #ImAnIdiot

Fix updown.test.js setup instantiates a MathQuill.StaticMath to test
up/down -- just coincidence that static math instances have a cursor
(for now) and so the test worked.
Add 'upOutOf' etc handlers on MathField's to API

Instead of moveDir/moveUpDown/deleteDir/selectDir in keystroke.js
checking whether a node is the root for this controller or not, use
polymorphism: new RootBlockMixin that overrides all of .upOutOf() etc
to not escape the block is used to extend MathBlock into RootMathBlock,
and RootTextBlock extends RootMathBlock like it used to rather than
MathBlock. RootBlockMixin() is also called on \MathQuillMathField{}'s
MathBlock; thanks to how Pjs mixins are just ordinary functions, that
just does the right thing.

I'm not worried about an infinite loop in moveUpDown because unless the
.parent chain is actually circular, there'll eventually be a null
dereference. (There's no simple check for a circular .parent chain, if
that's the case we're fucked anyway.)

The constructors for MathQuill instances now take an options object.
Currently only support `handlers` option: RootBlockMixin's overridden
.upOutOf() etc will call handlers.upOutOf() etc. See new docs.

Recommend -w to view diff.
(Because indented current 'Public API' tests under 'simple' suite and
added '*OutOf handlers' tests after the 'simple' suite.)