Refactored the caching system in order to be reusable through all class scanning methods.

I then refactored then all methods to use the caching mechanism.
I added also some test data sources (Java and Groovy source, JAR and html).