Equivalence classes for InfiniteFactors

renaming _orbit_type() to orbit_type() (no longer thinking of it as
internal)
Infinite Conjugacy test: Initial/terminal elements
Equivalence graph

Fleshing out the idea
More work on infinite conjugacy
Fixes to the computation of equivalence graphs
Equiv graphs now only store type B data
Fleshing out a means to enumerate potential orbits
Adding the restricted_injections() function

This is meant to efficiently enumerate the possible conjugators in
InfiniteFactor.

- Moving semi_infinite_end_points() to Automorphism instead of
InfiniteFactor
Changes to how equivalence graph is generated

- Keep one graph rather than a list of components
- Remove Type C vertices after generating the graph, not before
First working version of infinite conjugacy test

- Tidying up errors raised by Homomorphism and subclasses
Documentation update

- Now have to instantiate incomplete OrbitTypes, the empty SolutionSet
and the integers SolutionSet
- Added a small number of tests
Moving each example to its own file
Functions to randomly generate automorphisms

There's some bug with test_conjugate_to: see the doctests
Fixing bugs in test_conjugate_to

- Was using self instead of other
- Some automorphim factors that were being deliberately expanded were
being reduced.
- To fix this, new arg reduce added to __init__ method of Automorphism
and subclasses
Scripts for debugging infinite conjugacy test
Still working on debugging

Fixed copy/paste error in the graph reduction function
Semi-infinite orbits don't have to be type B
More tests

Trying to make sure conjugacy works now
aut_from_file() -> Homomorphism.from_file()
Can save homomorphisms to file

need to check from_file is an inverse