Filecache rewrite

This implements a complete rewrite of the filesystem metadata cache and large changes around the rest of the filesystem classes.

The biggest change for the cache is that the cache now runs dirrectly on top of the storage backends instead of on top of the rest of of the filesystem layers.
This means that each instance of the cache is tied to a single storage backend and the cache holds no information about where the storage is mounted,
this seperation between the storage backends and filesystem means that the cache can be re-used when a storage backend is mounted in several places.
Because of this, on row in the filecache table can hold information of a file available to mutliply users and thus the file permissions cache has been moved to a seperate table

This does mean that the cache no longer directly provides an easy to use api, instead filesystem view provides an api which glues together everything into a proper api.

Storage backends now also have the option to overwride caching, scanning and permissions behaviour so backends can provide specialized behaviour when needed.
The main usage for this is sharing which already has all the metadata stored in the sharing table and the filecache of the source file and it can be used to increase scanning performance for archives.

The main cache API now consists of the following functions
- \OC\Files\Filesystem::getFileInfo($path)
- \OC\Files\Filesystem::putFileInfo($path)
- \OC\Files\Filesystem::getDirectoryContent($path)
- \OC\Files\Filesystem::search($query)
- \OC\Files\Filesystem::searchByMime($mimetype) (accepts both 'text/plain' and wildcard 'text' style mimetypes)

getFileInfo and getDirectoryContent are still available in their old place, OC_Files for now


The other main change is that most parts of the filesystem stack have been renamed and moved into namespaces
- OC_Filesystem -> \OC\Files\Filesystem
- OC_FilesystemView -> \OC\Files\View
- OC_Filestorage_* -> \OC\Files\Storage\*
- OC_FileCache has been split into \OC\Files\Cache\Cache, \OC\Files\Cache\Scanner, \OC\Files\Cache\Permissions, \OC\Files\Cache\Watcher and \OC\Files\Cache\Updater

OC_Filesystem and OC_FilesystemView are still available through their old names for compatibility for now.


I'm not expecting changes this big to go without problems, so please do as much testing as possible

Don't forget to also update the apps repo https://github.com/owncloud/apps/pull/289