Introduced separate icons for Coq files and Coq views
Made the ICoqElement.getAncestor method use the TryCast object

As an added bonus, this commit also seals the ICoqElement trait
Turned the Coq model implementation classes into case classes

This will serve as a way of grouping "equal" model handles together, at
least until something better comes along
Added a shared model-wide cache to ICoqModel and CoqModelImpl

Together with the last few commits, this paves the way for Java model-style
behaviour: model elements will become simple handles, with the actual data
being kept safely in the model itself
Added a new interface for objects in the Coq model's cache

Cached objects are now required to be able to update and destroy themselves
Use the new shared model cache to store parsed _CoqProject files
Use the new shared model cache to store a project's load path providers

As an experiment, these are derived directly from another entry in the
cache
Added a utility method for converting Eclipse resources into ICoqElements

This method can only produce ICoqProjects at the moment, but -- as they're
the only model object actually being used -- that's fine for now
Invalidate cache entries when their model objects' resources change

The CoqModelImpl.WorkspaceListener class will eventually serve as a more
complete bridge between Eclipse changes and Coq model changes, but this is
still a useful start
Improved the prototype of the LoadPathConfigurationPage user interface

All three tabs are now implemented, and the layout is more similar to that
of the Java class path configuration page
Removed some leftover debugging code from the ICache trait

This commit also adjusts the trait's documentation to make the duties of
the update(IResourceChangeEvent) method clearer
Removed an erroneous use of the IWorkspace.AVOID_UPDATE flag

This flag was actually being treated as the IResource.FORCE flag, which is
not what was intended at all
Added a more convenient factory method for constructing CacheSlots
Reduced the compile-time priority of the Charge! load path

Charge! contains lots of files with common identifiers -- like "Stack", for
example -- which might collide with those in other projects. Hopefully
it'll be possible to get rid of this global unpleasantness when the
project-specific load path UI is complete...
Added a new kind of ICoqLoadPathProvider based on abstract identifiers

In the same way that Eclipse Java projects can depend on, for example,
"JavaSE-1.7", Coq projects should be able to depend on the Coq standard
library (or on Charge!) without having to specify an explicit local path
Extended the ICoqProject cache to include the generated load path
Improved the Java highlighting behaviour slightly
Added support for Charge! to the abstract load path system

This will make it possible to remove all of the Charge!-specific global
load path nonsense, which cheers me greatly
Removed all of the special treatment for the Charge! load path

In the future, Java/Coq projects will declare their dependency on Charge!
through the _CoqProject abstract load path mechanism
Turned ICoqLoadPathProvider into a sealed trait

As external code should be able to contribute abstract load path providers,
this commit also introduces a new trait designed to support that