Gave BasicRules an optional label property

This label now appears in the output of BasicRule.toString, and is useful
for debugging tokenisation problems. This commit also adds labels to the
existing BasicRules in CoqTokenScanner
Correctly handle comment tokens that end with multiple asterisks
BasicRule.State should use Ints, not Chars, in its internal map

This will eventually make it possible for BasicRules to treat the EOF
symbol like any other character
Added syntax highlighting for the "Unset" keyword and for option names
Made the Coqoon UI plugin use the new preference initialisation system

Prior to this commit, Coqoon's default colours weren't configured unless
Kopitiam was also loaded. Presumably this had something to do with the
mysterious "runtime compatibility layer"
Changed the way the auto-indentation code handles proof termination

Proof-terminating sentences are now treated as though they were part of
the proof they terminate, which makes the indentation work more reliably
Don't re-indent "Qed." lines if their indentation is already correct

This was causing the rollback code to run pointlessly
Allow BasicRules to transition between states on an EOF

At the moment, only a single EOF transition can be made before the
evaluation loop gives up; this is a lazy way of avoiding infinite loops
Added a partition processor for Coq documents

Coq documents are now split into Coq, comment and string regions
Use different token scanners for different Coq document regions

This commit also restricts the operation of CoqAutoEditStrategy to Coq
regions
Use a ForwardingDocumentProvider to configure Coq documents
Made CoqPartitionScanner better at handling damaged regions

The behaviour still isn't actually good yet, though, so this commit leaves
in lots of debugging console output
Use the correct identifiers for Coq partitions and content types

This makes the automatic code completion work properly in Coq partitions
Made the Coq partitioner ignore meaningless content types and offsets
Made the PartitionFinalState.offsetCorrection method less mysterious

This commit changes this method's name and documents what it's for, which
are both good
Calling CoqPartitionScanner.setRange should clear the previous token

This stops the scanner from intermittently returning weird, incoherent
information
Don't bother to perform any token scanning on comment regions

Comment regions only need a single text presentation, so always returning
the comment text attribute token seems like a suitably lazy way of
performing syntax highlighting
Keep the current state up-to-date when partitioning Coq documents

Prior to this commit, the current state and last final state could get out
of sync, accidentally allowing illegal transitions like String -> Comment
Revert "Allow BasicRules to transition between states on an EOF"

This reverts commit 14aaa6d33339b7722c9eba80be2487a53e4ad42a, which is no
longer necessary now that Coq documents are appropriately partitioned
Don't bother to perform any token scanning on string regions

This builds on commit 8924b769728370ece0089e8332335d3a2598ca34 by grabbing
as many characters as possible before returning a token, which should make
the highlighting a bit snappier. The same technique is now also used for
comment regions