Stop tracking empty uploads/ directory

It makes it harder when we use a symlink instead or mount points.
AtoM can still create the directory if it doesn't exist.
Support for params in cache_engine

cache_engine used to be a string containing the name of the class used in our
internal cache, e.g. sfAPCCache, sfAPCuCache, sfMemcacheCache, etc...
This commit adds support for a dictionary (class and param keys) in addition
to the old single-string format. This is very useful when we need to pass extra
settings to the cache engine, e.g.

New format:

  cache_engine:
    class: sfMemcacheClass
    param:
      [dict: see sfMemcacheClass for more details]

Old format (still supported):

  cache_engine: sfAPCCache
Add new storage factory for distributed sessions

Our default storage factory has always been QubitSessionStorage which extends
sfSessionStorage. In scenarios where AtoM is deployed across multiple nodes,
sessions musn't be stored locally. This commit adds QubitCacheSessionStorage,
which extends sfCacheSessionStorage.

Example (factories.yml):

prod:
  storage:
    session_name: symfony
    session_cookie_httponly: true
    session_cookie_secure: true
    cache:
      class: sfMemcacheClass
      param:
        ...
Move factories.yml to config/
Remove unused file
Add gearman_job_server setting