Minor pluggable backend code cleanup:
* improve type safety: make BackendImpl generic on its configuration type
* push BackendImpl.getBackupDirectory() down to Storage interface
* create and initialize Storage inside BackendImpl.configureBackend()
* rename BackendImpl.newStorageInstance() to configureStorage()
* remove Storage.initialize() and make initialization responsibility of BackendImpl.configureStorage()
* added Storage.supportsBackupAndRestore() so that storage implementations can declare whether they support this functionality
* removed BackupConfig.[gs]etFilesToBackupFilter() since they are no longer needed. In hindsight they should not have been part of BackupConfig anyway.