Introduce Interface for Repository
This major refactoring introduces an interface for the resource
repository. The interface is a first step towards a much looser coupling
between the internal classes. Specifically, I will be used to allow
an easier exchange between a training repository and a contributor
repository.
For now, the old resourcemanager will stay until it is fully replaced
by an implementation that is compatible with the IResourceRepository
interface.