Lots of this diff is caused by turning `Yarp::Cache` from a module into a class.

Give it a different name, e.g. `Yarp::ConcreteCache`, since this is really just instanciating a tee-cache.

Then this diff can become much smaller (most changes to `Base`, `File`, `Tee`, `Null` can be rolled back).