The CoqCommand.run method should take a CoqTopContainer as its argument

This makes it possible for commands to communicate with the editor that's
running them
Explicitly define the document region covered by a JavaStep

JavaStep is getting a bit over-complicated, I think; once the support for
multiple commands is in place, it'll be time for a bit of refactoring
Made the Coq token scanners publicly available

The JDT exposes its own scanners through the JavaTextTools class, and the
KopitiamAspects plug-in will eventually need to use these scanners
Added an accessor method for Kopitiam antiquote content

This commit also makes the printProofScript method use this accessor
Made the JavaASTUtils.printProofScript method return a Seq[JavaStep]

This method has all the information required to construct JavaSteps, and
this information is not trivially available outside it, so it makes sense
to just do everything here
The collectProofScript method should filter out JavaSteps, not Statements

And with that, the Java editor at last supports multiple commands in a
single antiquote block. Hooray!
Fixed the JavaStepForwardRunner error marker offset calculation

The range of a JavaStep now takes the antiquote lead-in sequence into
account, so the correction here was no longer necessary
Moved the CoqOutput class into its own source file
Moved the responsibility for executing CoqCommands to CoqTopContainer

This is a much less mad way of allowing CoqTopContainers to intercept
commands
Updated the TODO file
Allow all script elements to be highlighted, not just sentences
Reimplemented the CoqScriptSentenceImpl class

In an attempt to cut down on unnecessary packing and unpacking code, the
constructor now takes a CoqSentence.Sentence directly
Replaced the CoqLtacGroup case class with a subtrait of ICoqScriptSentence

Ltac sentences are now instances of the new ICoqLtacSentence trait. This
new approach will soon replace CoqScriptGroupDispositions entirely
Replaced more CoqScriptGroupDisposition subclasses with traits

All of the dispositions which tagged single-sentence "groups" have now been
removed: removing the remaining three will require a bit more restructuring
Removed the CoqLoadGroup and CoqRequireGroup dispositions

After making this change, I now have vague suspicions that "Load" sentences
with a string argument have been broken for a while. I should probably look
into that
Replaced the last three CoqScriptGroupDisposition subclasses with traits

This commit also removes CoqScriptGroupDisposition entirely. To replace it,
the concept of a "determining sentence" has been added to ICoqScriptGroup
Made the core of the Coq lexing infrastructure less dependent upon Eclipse

The new StateRule class, incorporating almost all of what was once the
BasicRule class, will shortly move into the Coq core plug-in, where the
model will use it to do actual lexing and parsing! Eventually. Probably
Moved the StateRule class into the model plug-in
Replaced the fixed input type of StateRule.State with a type parameter

Using an Int to express a character is essentially a cheap substitute for
an Option[Char]. The code now just uses Options everywhere, which also
makes it possible to transition on other kinds of input
Added a type parameter to the CharacterScanner trait

This commit also renames this trait to Scanner, since it can return
anything now