[major] expand targets before launch, refactor agent expiration handling

Another requested feature: expand the list of agents targetted by an action prior to launch. This is done the safe way, by changing the role of the DB user to a readonly one prior to expanding the target.
As a side effect, I added another needed feature, and the scheduler's collector now mark agents as offline once the timeout period is passed. We can now list active agents by simply searching on `status='online'`.