Introduce Clockwork for scheduling jobs.  #3127.

I wanted to keep scheduling inside Cases' web workers, but that has a
few problems:

1. It requires locking to avoid duplicate scheduling, which wasn't
   implemented.
2. It doesn't actually work in Passenger under MRI 1.9.3.  The way those
   two components interact prevents background threads from running.

Solution: move scheduling into a separate process.

I'd like to keep the scheduler process footprint very small.  This means
that the scheduler code (if I can help it) will *not* run through Cases'
boot process.

Since the scheduler is just triggering jobs to run in a Sidekiq process
this should be doable, but it may require some surgery to separate
configuration code (which, except for the Rails environment, can be done
without any references to the Rails object) from code that uses said
configuration to modify the Rails object.
Move the watchdog worker to a separate file.  #3127.
SidekiqConfiguration uses definitions from RedisConfiguration.  #3127.
Don't augment Rails.application unless we're in a Rails app.  #3127.

(The clockwork process shouldn't need to have the application
environment loaded.)
Eliminate application dependencies from RedisConfiguration.  #3127.
Clockwork configuration.  #3127.
Run WatchdogWorker in scheduler.  #3127.
Define periodic jobs as workers.  #3127.
Survey.cache_recent.  #3127.

This commit also moves SurveyCache and SurveyCacheWorker out of Field,
because -- while it's currently only used in Field support -- there's
nothing about those classes that makes them Field-specific, and there
*shouldn't* be anything about them that is Field-specific.  (Some other
Cases client could use JSON surveys, for example.)