Let queue specify class of agent to use

You want an `Agent`? You got an `Agent`! You want a `FooAgent`? You got a `FooAgent`!!!