Extracting the caching logic in Schama to another object

This will become handy when the Database namespaces is extracted into
another repository
Adding test for schemaCollection() as a setter
Adding missing file
Fixing doc block
Merge pull request #4765 from cakephp/3.0-extract-schema-cache

3.0 extract schema cache