Added IRepository<T> to demonstrate generic bindings.
Applied cached repository pattern to generic repository.