switching to AnyEvent timeouts for inactivity; adding top-level job timeout