Get rid of odd notion of an 'identity' object being returned from compare()
Change casing of 'Sequence' to hint that it's a general term not a concrete type.
Make implementation of _default_compare_strict easier to follow and fix up missing whitespace.
trim extra whitespace from compare_dict output.
factor out comparison lookup
Allow registering of a comparer for a sublcass of an already-registered type.
Implement recursive comparison.

Not entirely happy with this, see test_nested_generator_different and test_nested_strict_only_type_difference for reasons why.
Change implementation to use a context object for comparisons, which will hopefully get around the tricky cases.
More general handling of comparison of iterables when not in strict mode.
Code shuffling.
Remove Result and ToCompare classes that turned out not to be necessary.
Specific comparison for namedtuples.
strict recursive - all tests pass
doc fix for recursive compare.
Final code tidy for this branch.
Drop the option to supply a comparer registry and replace it with the option to pass in an extra dictionary of comparers.
Update documentation for recursive comparison and namedtuple comparison.
Add support from comparing dictionaries that are equal.

This can happen when a parent object comparer hands off comparison for a dictionary that it doesn't know may be equal.
Merge branch 'recursive_compare'
Various documentation changes preparing for the 4.0.0 release.