LINQ and validation improvements.

Fixed LINQ use case where Take and SingleOrDefault were combined.
While SingleOrDefault LIMITS total results to 2, this can be overriden with Take(1).
Inspected limits for this edge case.

Since IValidation<T> can be used in repositories, added appropriate method CanPersist
and improved signature to limit it's use.
While validation can be used on entities and values too, it's not supported by this interface.