Fix exception message for non-deferred return types in GuardClauseAssertion,

such that when it encounters IEnumerable return types, it will treat the known non-deferred enumerable types (such as Array, IList, ICollection, etc) as non-deferred, and therefore will not give a misleading exception message about them being deferred.

This fixes #277.