Beginning to work on isomorphisms
(arity, alphabet_size) -> signature

Probably have lots of docs that need rewriting now.
Tweaks to documentation
Moving examples imports to .. testsetup
(Iso, Auto)morphism -> (Homo, Auto)morphism

Could not use an isomorphism to represent the relabeling process because
such maps are not surjective in general. Use a homomorphism instead.

Unfortunately this means that the image() method had to be reworked
(inverses don't make sense for homomorphisms).
Integrating periodic test w/ main conjugacy test

- Prettier printing for AutomorphismFactors
- Generator objects can have a relabelling homomorphism
- Fixed a bug where a QNF basis cache was modified because we didn't
passed a reference rather than a copy of it.
Moving factors into their own .py file

Few small tweaks to documentation.
Tidying up free_factors()

Fixed a few bugs where we passed references to generating sets rather
than copies of them.
Moving relabelling functions to generators.
Generators no longer store any info about relabellers, that's the job of
the factors.
Addressing some TODOs

Also tidying up docstrings