Tidied up OpenDeclarationHandler a bit

This commit simplifies the result processing code and moves the
isCoqIdentifierCharacter method into the companion object
Tidy up leftover contexts in CoqVernacFileImpl

The old version of the code just threw away unclosed contexts: now they're
pushed onto the stack as though they had been closed properly
Improved the Coq project builder's error handling behaviour

Errors emitted by the Coq compiler without position information (like
"Error: There are pending proofs.") are now supported properly
Added a few package-related icons from the Eclipse JDT
Install the package icons into the Coqoon UI plugin's image registry
Added a proper label provider for Coqoon model objects

This label provider shows package fragment root and package fragment icons
in the appropriate places and looks up objects' names instead of always
calling toString
Don't use null pointers in ModelContentProvider

This commit also adds a viewer refresh when the input changes, fixing a
Common Navigator-related bug
Require that CoqElementChangeEvents expose a source element

This commit also simplifies CoqElementImpl's notification dispatch code,
which no longer needs to propagate a useless second source value around
Simplified CoqPackageFragmentRootImpl's fragment search algorithm

Empty fragments are now included in the result, as they are for Java
projects -- and, as an added bonus, the method no longer breaks when a root
directory doesn't exist
Added the JDT's empty package icon to the Coqoon UI plugin

This commit also registers this icon with the plugin's image registry
Added support for the empty package fragment icon to ModelLabelProvider
Require that ModelContentProvider viewers be StructuredViewers

The StructuredViewer API makes it possible to refresh single elements in
the tree
Added an IAutoEditStrategy for the Coq editor

This strategy just defers to DefaultIndentLineAutoEditStrategy for
everything at the moment, but it'll eventually become more sophisticated
Added Coq model events for element creation and deletion

Nothing emits these events yet, but that'll soon change
The Coq builder shouldn't delete empty package fragment roots after a build

Empty package fragments are fine, but deleting roots is asking for trouble
Explicitly delete .vo files which need to be rebuilt

I'm not actually sure this is the best thing to do, but having stale .vo
files lying around causes confusion (and stops the project cleaner from
working properly)
Generate add and remove events when Coq elements are created or destroyed

This doesn't actually work properly yet -- the add events are fine, but the
remove events are never fired because the code for mapping IResources to
ICoqElements breaks when an IResource doesn't exist
Don't use content descriptions to detect Coq proof scripts and object files

This change makes it possible to create ICoqFiles corresponding to deleted
or otherwise nonexistent files
JavaProofInitialisationJob should offer to add the Coq nature to projects

This commit also adds support for adding Charge! to the project's load
path, which should be enough to make Kopitiam work in most cases
Translate workspace changes into Coq model changes as quickly as possible

As a result of this commit, the Coq model now listens for POST_CHANGE
notifications, not PRE_BUILD notifications. This should cause invalidated
cache slots to be emptied immediately