Filesystem handlers

This PR introduces the concept of filesystem handlers - objects that can be called instead of a storage to perform certain tasks. Apps can install their handlers by calling `\OC\Files\Filesystem::setHandler()` (after the filesystem is set up), which will then only apply for the default view - all other views will still call the storage. Handlers are covered by three unit tests.

This PR also rewrites files_trashbin to use filesystem handlers instead of hooks. That means no copying then deletion, just a straight up rename! Fixes #10915