add MathElement::bubble(event, arg)

successively calls methods with the name of the event on ancestor nodes, starting with this node. Return false to cancel bubbling
use MathCommand::bubble for textInput
use MathCommand::bubble for keydown
use MathCommand::bubble for redraw

fixes selecting something and typing a close paren or bracket etc not sizing correctly
  (because the cursor was inserted after the paren block and redraw was called on ancestors of the cursor rather than on the newly created/inserted command)
rename MathCommand::insertAt to createBefore

MathCommand::insertAt itself changed to be more like Cursor::insertAt
initBlocks => createBlocks

MathCommand::createBefore now creates this.jQ and calls createBlocks rather than init calling initBlocks, delaying creating stuff until the last moment and preparing for where not everything is known at constructor call, such as optional blocks
.before() simpler than .insertBefore()
add and use MathCommand::replaces

instead of passing a replacedFragment argument to MathCommand::init

not possible before now because blocks were created (possibly from replacedFragment) by MathCommand::initBlocks which was called by MathCommand::init, but now blocks are created by MathCommand::createBlocks which is called by MathCommand::createBefore, so as long as replaces is called before createBefore, the first block can be created from the replacedFragment.

also elegantly, effortlessly cleans up the headache with having to do some things before passing the selection (as the replaced fragment) to a command's constructor and some things after, see the diff of src/cursor.js
s/this.init(/MathCommand.call(this, /g

invoking the MathCommand constructor from a subclass constructor
should follow the same pattern as other superclass constructors,
like Symbol, now that every argument is completely optional (as
they should be)
Merge branch 'bubble' into v0.3-merges
Merge branch 'creation' (early part) into v0.3-merges
add and use simple sugar for idiomatic classes
Merge branch 'classes' into v0.3-merges
slightly simplify LatexCommandInput captured fragment mouse event hack #cosmetic
simplify Cursor::deleteSelection
MathFragment and Selection should be first and last, not parent/prev/next
rearrange Selection methods
clarify Cursor::selectLeft/Right by adding and using Selection::extend/retractLeft/Right
Merge branch 'fragments' into v0.3-merges
add and use convenient backup expecting createBlocks to be overridden