Refactor Synesthesy interface and cache classes

 - Add generic way to add a cache ( with a filter functionality)
 - Rework package structure