Don't auto-PART a channel if the lastJoinedTime is null

This prevents potential erroneous auto-PARTing after a long
period of being unable to connect to IRC.
Return null if a channel variable isn't set
Delete PART-requested channels on reset

This prevents them from being needlessly re-JOINed.
Improve cron system to decouple the tasks from the timer

If the timeout timer is running faster than the cron job needs to
run, the cron job should only be run at its own interval.
Use >=/<= for pruning comparisons
More timing improvements
Introduce send throttling