Use separate executor for long-running tasks

This simplifies the handling of both Scheduler and
ScheduledExecutorService.

It also fixes the incremental pushing scheduling to be what were were
expecting; if the incremental pushing is running while the schedule
fires to start it again, it should be skipped. The previous behavior
would queue executions that would begin as soon as the current one
completed. The old behavior isn't horrible, but wasn't what we had
decided.

This change also prepares for removal of the cron4j Scheduler, for
similar reasons as the two notes above.

Since docIdFullPusher is no longer stop()ed, it doesn't need to be
re-created each start().
3 files changed