Comment out forget_all() in make_bin.ML

Maybe this will give us better stack traces?
Tidy up RULE signature

BASIC_RULE is dead, RULE now refers to string graphs, and
BANG_GRAPH_RULE is introduced for !-graphs.  Similarly, there is now a
BANG_GRAPH_RULESET.
Introduce a Rewriter structure, to replace GraphSubst

This incorporates the low-level rule-only code from RulesetRewriter.
Make RulesetRewriter use Rewriter
Remove GraphSubst
Re-work the core buildsystem

There are now scripts in tools/ that take care of all the magic of
building the heap and the executables.  The Makefile does very little,
and there are no more random make_heap.ML/make_bin.ML files with
hardcoded paths (all the paths are in the Makefile).
Put MatchSearch back in the GRAPHICAL_THEORY signature

Turns out QuantoCosy needs it.
Trap any unhandled exceptions raised in the main function

This got lost in the conversion.  Now unhandled exceptions will have
their trace printed.
Set source-compatibility with Java 1.6

This essentially declares that our source files are intended to be used
with version 1.6 of the Java language.  It has the nice side-effect of
producing a more sensible error when you try to compile with Java 1.5.
Remove spurious @override annotations

Discovered these when accidentally trying to compile it with GCJ (which
treats these as errors).
Make sure to load tags before manipulating them

Fixes a null pointer exception when deleting rules.
Do not crash when selected vertices disappear

This is a two-part fix; in the core, we deal properly with bad vertices
being given for the attach rewrites command, and in the GUI we properly
remove old vertices from the pick state so that bad vertices are never
given to the attach rewrites command.

Fixes #110
Merge branch 'stable' into integration
Save annotation data for wire vertices

Issue #111
Fix LaTeX (TikZ) output generation

Vertex.getVertexType().toString() would not return the typename, but a
Java magic string, and Vertex.getVertexType() would be null for
wire/boundary vertices, leading to a null pointer exception.

Both these issues are now fixed, by checking for null (and using "wire"
for the type name in that case) and by implement toString() for
VertexType.

Fixes #111
Merge branch 'stable' into integration
Ignore heaps directory
Don't require VData.subst to be same as EData.subst

Everything goes via G.Param for substitution, so VData does not need to
know about EData and vice versa.  The graph Param ties everything
together in whatever way makes sense.
Remove getopt usage in build scripts

This should fix things on MacOS
tempdir hack for os x