Skip the morlist_raw jobs if needed

When the _cache_morlist_process_atomic takes time. And the morlist
collection is due to happen again, skip requeueing stuff when the
previous morlist collection hasn't finished yet.
Reset metadata sneakily

Avoid resetting at the beginning, if iterating through the perfCounters
is slow, all that time where async jobs can be trying to report metrics
will be wasted because metrics will be dropped as there is no metadata
on them... Just do a big swap at the end, it would be better to use
something to sync the jobs though.
Make the morlist_process batching configurable
Set pool_started to False in the stop_pool function

Because we can stop_pool and keep the AgentCheck class running.
This causes the ThreadPool lib to fail on an assert otherwise when
we try to queue more tasks, with this change if the pool is stopped
it will be restarted in the next run().