Interface normalization.

Although the CacheProvider provides several interesting capabilities, most are not available through the Cache interface. This PR simply declares new interfaces and CacheProvider as implementation of theses.

Note that FlushableCache could be implemented only by implementations that were actually able to flush all entries, instead of CacheProvider.

@stof I'd argue that this is something we should fix in the ORM implementation then: https://github.com/doctrine/doctrine2/blob/1cc42d6a630b81768864a7bb219b6a78f9c35fb4/lib/Doctrine/ORM/Cache/Region/DefaultRegion.php#L63