Handle default content type regions as though they were Coq regions

This commit makes autocompletion at the end of files work properly again
Removed the debugging output from the CoqPartitionScanner class
Added a formatting strategy for Coq code

This formatting strategy does nothing at the moment; luckily, it's also
invisible, because Coq editors don't expose a "Format" command
Added a command and handler for invoking the Coq formatting strategy

This commit also adds the corresponding XML folderol to the plug-in
manifest. In future, Coqoon probably shouldn't implement this handler
itself, but should instead use the refactoring framework
Upgraded the Coq formatting strategy to an IFormattingStrategyExtension

This commit also replaces the old FormattingStrategy with a
MultiPassFormattingStrategy, which improves support for formatting multiple
regions at once. The strategy still doesn't do anything, of course
Changed the way the Coq content formatter is initialised

Using CoqPartitions.Types.COQ as the default content type seemed like a
good idea, but it wasn't -- it just told the master strategy to treat
everything, including strings and comments, as Coq partitions. This commit
uses IDocument.DEFAULT_COMMENT_TYPE instead, as the Java formatter does
Added dummy formatting substrategies for Coq and comment regions

This commit also refactors CoqMasterFormattingStrategy into a new
FormattingStrategyBase class, which makes the IFormattingContext interface
a bit less unpleasant to work with
Parse the content of a Coq antiquote into separate Coq sentences

For now, the rest of the codebase ignores everything apart from the first
sentence
Moved support for synthetic Coq sentences into the CoqCommand class

JavaSteps can now also represent synthetic sentences, although this isn't
used anywhere yet
Added support for ignoring synthetic steps to JavaStepBackRunner

JavaStepBackRunner and CoqStepBackRunner now look very similar; it'll
probably be possible to move some of this code into a new StepBackRunner
class before too long
Rewrote the getSplitAnnotationRanges method to be easier to understand

A nice match statement has now replaced the nested, baffling, horrible
flatMap nightmare that was once here
Made JavaEditorState's complete and underway methods return Option[Int]s

This paves the way for entirely offset-based markers, which will make it
possible to support several commands in a single antiquote block
Made JavaEditorState's complete and underway markers into Option[Int]s
Drastically improved the behaviour of the Java editor's Coq highlighting

The completed marker now always covers the quantification, precondition
and postcondition blocks, along with the method signature
Made JavaEditorState synchronise marker accesses like CoqEditor does

This commit also introduces the CoqEditor rate-limiting mechanism to
JavaEditorState, since that seems to work well
Removed the two-argument version of the collectProofScript method

The Java editor is about to support multiple enqueued step-forward jobs,
so explicitly specifying the starting point of a proof script is now
necessary
Added a sanity check to the JavaStepForwardRunner.preCheck method

Java step-forward jobs will now only execute if their first step is the
first one after the completed marker
Allow multiple step-forward jobs to be enqueued in the Java editor

This commit also simplifies the unnecessarily complicated implementation
of the JavaEditorHandler.calculateEnabled method and fixes a harmless
override bug in CoqStepForwardHandler
Simplified the JavaASTUtils.traverseAST method

Using a List instead of a (deprecated) Stack removes the need to repeatedly
reverse sequences of statements before pushing them
Allow the JavaASTUtils.traverseAST callback to return multiple objects

This makes it possible for a single Java statement to become multiple
JavaSteps, although the relevant handlers don't support this yet