Revert "Revert "Enumerable object's runtime type used by ShouldBeEquivalentTo rather than declared type""

This reverts commit eb7aff3f559cc5709daa4e9818ba2a7dc7464e4a. This was done in response to dennisdoomen's request for a new PR on Issue #138.
Corrected the creation of the nested context for DictionaryEqivalency to respect the type of the of the item in the dictionary.
Merge pull request #141 from vossad01/Issue22/RespectCollectionDeclaredType

Reintroduce handling of collection declared type and fixed creation of Dictionary equivalency context