Went back to seperate GenericEnumerableEquivalencyStep and EnumerableEquivalencyStep classes.  Simply easier to reason about this way.
Moved specs that really made use of ShouldAllBeEquivalentTo behavior to their own region.
Removed unnecessary use of an anonmyous type in a test.
Added a ShouldAllBeEquivalentTo spec for assertion rules.
Rewrote ShouldAllBeEquivalentTo in terms of ShouldBeEquivalentTo
Specs for another case where delared type is not respected
ShouldBeEquivalentTo now respects the Runtime/Declared type configuration options within its Enumerable related steps.