Add a merge method to Compilations.

Also fixed a cut-n-paste mishap in Relations.
equals/hashCode on Modifiers.
remove dead code in TestFramework
Add equals/hashCode to generated API datatype classes.

Equality is reference equality for classes that have lazy members
(currently Structure and ClassLike) and member equality for everything else.
This avoids the circularity issue due to lazy members.

Forces each class to be either abstract or final, to ensure that
the equals implementation is always correct.

Fixes toString to avoid infinite recursion.
Merge remote-tracking branch 'benjy/compilations' into 0.13
Merge remote-tracking branch 'benjy/modifiers' into 0.13
Merge remote-tracking branch 'benjy/datatype_codegen' into 0.13