Add a merge method to Compilations.

Also fixed a cut-n-paste mishap in Relations.
Fix missed RSource->Source renames.
equals/hashCode on Modifiers.
Add merge, partition and groupBy methods to Relation.

Also add equals/hashCode to Relation.

Also add a basic test for groupBy.
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
Merge remote-tracking branch 'benjy/relation' into 0.13
Add correct implementations of merge/groupBy to Analysis.

Copious comments to explain the non-trivial logic.
Use scalacOptions from project/ for the build definition.
Docs: howto pages on classpaths and default paths
Update home.rst

It took me a while to find where the documentation was in the GitHub repository.  Maybe pages could link back to their source?
Complete code example in Custom-Settings.rst

The original wording confused me.  I thought it meant that there was no point to my new keys unless I used them in a task.  But rather it meant that I needed to create keys for my task and then a task definition with the same key name.  I added the creation of the keys to the task implementation code example to clear this up in the future.
Merge remote-tracking branch 'benjy/analysis2' into 0.13
An intern pool implementation, and associated serialization formats.
Docs: minor fixes
Include link to source on GitHub at bottom of the page.  Fixes #921.
remove dead APIFormats code