Created abstract factory for caches

- Allows having multiple cache objects by implementing an abstract
  factory.
- When requesting a cache services, prefix with 'Cache\\', but
  configuration omits that prefix for brevity.
Ran php-cs-fixer
Merge branch 'feature/4253' into develop

Close #4253