Perform line-buffered I/O in a nicer way

This commit adds a new support class which wraps repeated calls to the same
function in an Iterator[A]
Don't unnecessarily reimplement the IResource.contains method

Although this method is actually provided by ISchedulingRule, in which it
has nothing to do with the filesystem hierarchy, it does in the IResource
context
Removed the unnecessarily-complicated wildcard types from CoqModel
Added conversion methods to the ICoqLoadPath trait

Instances of ICoqLoadPath can now convert themselves into Coq commands or
arguments to a Coq program
Changed the return type of the ICoqProject.getDefaultOutputLocation method

At least for the time being, IFolder is a more useful type than IPath
Don't hard-code the default output location in CoqBuilder
Added workspace resource creation support to CoqCompileRunner

CoqCompileRunner can now (optionally) turn the .vo files produced by coqc
into normal Eclipse workspace resources. Note that this is a temporary
solution -- the entire compilation process will probably change soon
Added support for cleaning projects to CoqBuilder
Automatically create output directories during the build process
Dramatically improved the performance of the dependency scanner

I forgot to delete a fragment of the old character-based scanner, so
enormous strings were being built up agonisingly slowly for no reason
Don't discard the region after the last comment when finding dependencies

As a highly amusing consequence of this bug, files with no comments were
being treated as though they had no dependencies
Perform casting in a safer manner

This commit introduces a dependency on the Scala 2.10 Manifest.unapply
method (and also fixes a mysteriously stupid bug in InitialiseCoqRunner
introduced by commit 4739e9ec27a0211e78955654477dfba052f9416a)
Fixed the object file age check in CoqCompileRunner

The check is now performed against workspace files rather than Coq output
Made CoqBuilder's error markers more helpful

The builder now makes an attempt to convert Coq's error output into
informative, structured error markers
Allow the Coq build process to be cancelled

Note that cancelling a Coq build is still not a good idea -- the builder
doesn't yet have any way of updating its state to reflect a cancellation
Fixed CoqBuilder's broken dependency propagation conditions

Somewhat confusingly, IPaths can represent either filesystem locations or
workspace paths
Repair the builder's state (slightly!) when cancelling a Coq build

Uncompiled files with fully resolved dependencies are no longer left in
limbo by the build process
Don't pass a progress monitor to the DependencyGraph.generateDeps method

As a result of commit a3edbd7bebce8b8ab427ff296159d961f1241c4e, dependency
extraction is no longer slow enough for this to be necessary
Don't always delete all object files when performing a full build

The full build process now just intentionally forgets all of the project's
resolved dependencies before triggering a normal build with an empty delta
The Coq builder should create permanent markers, not transient ones