All callers of `GenericTaskQueue::initialize()` has the following pattern:
```
q = new GenericTaskQueue();
q->initialize();
```
We can inline `initialize` to the constructor; it has two advantages:
1. simplifying the caller logic; just call the constructor
2. matching the alloc/free pair with the constructor/destructor pair
```
q = new GenericTaskQueue();
q->initialize();
```
We can inline `initialize` to the constructor; it has two advantages:
1. simplifying the caller logic; just call the constructor
2. matching the alloc/free pair with the constructor/destructor pair