Refactor glir queues (again)

So now there is a queue on each program, which is kept there.
The queue can be associated with other queues, creating a sort
of tree. This also got rid of the need for a shared queue.