Add new config options and functionality to support scheduling each gc part (purge_nodes, expire_nodes, purge_reports, other) at its own interval. We should be able to relay on Java's Scheduled Thread Pool Executor for this without changing the serialized nature of PuppetDB GC as long as we use a threadpool size of 1
Separated gc-interval, which controlled a single job that performed all garbage collection that PuppetDB requires into multiple jobs, all with their own configuration option, so that users can better tune their gc frequency to their use case(s).