IO: Added DFS metadata handler

> Extract of DFS from #1017

Adds a `legacy_dfs_cluster` metadata handler.

Reads and writes metadata to MySQL using doctrine, from the legacy `ezdfsfile` table.
An event listener can serve files from NFS like `index_cluster.php` did with legacy.

## Configuration
```
ezpublish:
  system:
    default:
      io:
        metadata_handler: dfs_cluster
        binarydata_handler: nfs

ez_io:
  metadata_handlers:
    legacy_dfs_cluster:
      dfs_cluster:
        connection: doctrine.dbal.default_connection
  binarydatadata_handlers:
    flysystem:
      nfs:
        adapter: nfs

oneup_flysystem:
  adapters:
    local_adapter:
      local:
        directory: /mnt/nfs/ezpublish
```

## Legacy compatibility
This will work with legacy configured with the DFS file handler, and the NFS mount point on `/mnt/nfs/ezpublish`.

## Cloud storage support
The S3 flysystem driver can be used instead of local. However, in order to be compatible with legacy, 
 [ezsystems/ezdfs-fsbackend-aws-s3](ezsystems/ezdfs-fsbackend-aws-s3) must be used to store ALL files (not just images or binaries).

## TODO
- [ ] Rewrite rules
CS + remarks I made on #1017