Renamed DI namespace to DependencyInjection because it was prettier

Added a generic IEqualityComparer<T> (PropertyEqualityComparer<T>) based on a Func<T,TProperty> to compare the equality of an object based on a property (like Id)

Added enumerable extensions with several methods to extend Linq to Objects based on the the PropertyEqualityComparer