Fixed TypeExtensions.IsSameOrInherits and added some tests

There was a problem in TypeExtensions.IsSameOrInherits which would result in error if you use something like this:
a.ShouldBeEquivalentTo(b, o => o.Using&lt;object&gt;(c => ....).When(....)
This shouldn't fail because every object inherits from object.