Extract  interaction with config.php into SystemConfig

* introduce SystemConfig to avoid DI circle (used by database connection which is itself needed by AllConfig that itself contains the methods to access the config.php which then would need the database connection - did you get it? ;))
* use DI container and use that method in legacy code paths (for easier refactoring later)
* create and use getSystemConfig instead of query() in DI container
@deprecated messages for \OCP\Config and \OCP\AppConfig
use old methods and redirect in deprecated methods
introduce proper interface for deleteAppValue
introduce deleteAllUserValues
migrate \OC\AllConfig to \OCP\IConfig
fix base.php for not installed systems
Refactoring of OC_Preferences to AllConfig

* keep old static methods - mapped to new ones and deprecated
* removed deleteApp, getUsers, getApps because they are unused
* make AllConfig unit tests more robust against not cleaned up environments
introduce preCondition for setUserValue to provide atomic check-and-update
Workaround to fix the too early init dilemma

* this needs to be properly fixed by a proper organisation of the base.php
* introduced fixDIInit() in AllConfig that moves the injection
  of DatabaseConnection to a later point in time
* problems mostly because of the autoconfig setup
reduce OC_Preferences, OC_Config  and \OCP\Config usage

* files_encryption
* files_versions
* files_trashbin
* tests
* status.php
* core
* server container
drop unused isDebugMode and setDebugMode of OC_Config
Merge pull request #12406 from owncloud/drop-getApps-getUsers

Config cleanup - OC_Preferences refactoring