Implemented caching data supplier. Fixes #11.

Changed the interface for the DataSupplier slightly, time is now implicit.
Put CachingDataSupplier into production.
PMD now happy.
Merge branch 'feature/data-supply-cache' into develop
A few refactorings.