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 thier 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